diff options
author | Markus Armbruster <armbru@redhat.com> | 2023-04-28 12:54:23 +0200 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2023-05-09 09:12:48 +0200 |
commit | 9b2c6746d30a44d222e9124faee59eb05703b6ae (patch) | |
tree | d657574a2351ae92041407e8c87b5f7fc2c04a55 | |
parent | a87a9b4d4fc4dcfa2925b1b90474f0ec69d59edf (diff) | |
download | qemu-9b2c6746d30a44d222e9124faee59eb05703b6ae.zip qemu-9b2c6746d30a44d222e9124faee59eb05703b6ae.tar.gz qemu-9b2c6746d30a44d222e9124faee59eb05703b6ae.tar.bz2 |
qapi: Fix argument description indentation stripping
When an argument's description starts on the line after the "#arg: "
line, indentation is stripped only from the description's first line,
as demonstrated by the previous commit. Moreover, subsequent lines
with less indentation are not rejected.
Make the first line's indentation the expected indentation for the
remainder of the description. This fixes indentation stripping, and
also requires at least that much indentation.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20230428105429.1687850-12-armbru@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
-rw-r--r-- | scripts/qapi/parser.py | 20 | ||||
-rw-r--r-- | tests/qapi-schema/doc-good.out | 2 |
2 files changed, 12 insertions, 10 deletions
diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py index 7b49d3a..ddc14ce 100644 --- a/scripts/qapi/parser.py +++ b/scripts/qapi/parser.py @@ -483,7 +483,9 @@ class QAPIDoc: # Blank lines are always OK. if line: indent = must_match(r'\s*', line).end() - if indent < self._indent: + if self._indent < 0: + self._indent = indent + elif indent < self._indent: raise QAPIParseError( self._parser, "unexpected de-indent (expected at least %d spaces)" % @@ -631,9 +633,9 @@ class QAPIDoc: indent = must_match(r'@\S*:\s*', line).end() line = line[indent:] if not line: - # Line was just the "@arg:" header; following lines - # are not indented - indent = 0 + # Line was just the "@arg:" header + # The next non-blank line determines expected indent + indent = -1 else: line = ' ' * indent + line self._start_args_section(name[1:-1], indent) @@ -666,9 +668,9 @@ class QAPIDoc: indent = must_match(r'@\S*:\s*', line).end() line = line[indent:] if not line: - # Line was just the "@arg:" header; following lines - # are not indented - indent = 0 + # Line was just the "@arg:" header + # The next non-blank line determines expected indent + indent = -1 else: line = ' ' * indent + line self._start_features_section(name[1:-1], indent) @@ -712,8 +714,8 @@ class QAPIDoc: indent = must_match(r'\S*:\s*', line).end() line = line[indent:] if not line: - # Line was just the "Section:" header; following lines - # are not indented + # Line was just the "Section:" header + # The next non-blank line determines expected indent indent = 0 else: line = ' ' * indent + line diff --git a/tests/qapi-schema/doc-good.out b/tests/qapi-schema/doc-good.out index 2ba72ae..277371a 100644 --- a/tests/qapi-schema/doc-good.out +++ b/tests/qapi-schema/doc-good.out @@ -159,7 +159,7 @@ doc symbol=cmd arg=arg1 description starts on a new line, - indented +indented arg=arg2 the second argument arg=arg3 |