[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 11/17] qapi: Fix argument description indentation stripping
|
From: |
Markus Armbruster |
|
Subject: |
[PULL 11/17] qapi: Fix argument description indentation stripping |
|
Date: |
Tue, 9 May 2023 10:00:05 +0200 |
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>
---
scripts/qapi/parser.py | 20 +++++++++++---------
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 7b49d3ab05..ddc14ceaba 100644
--- a/scripts/qapi/parser.py
+++ b/scripts/qapi/parser.py
@@ -483,7 +483,9 @@ def append(self, line: str) -> None:
# 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 @@ def _append_args_line(self, line: str) -> None:
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 @@ def _append_features_line(self, line: str) -> None:
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 @@ def _append_various_line(self, line: str) -> None:
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 2ba72ae558..277371acc8 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
--
2.39.2
- [PULL 01/17] docs/devel/qapi-code-gen: Clean up use of quotes a bit, (continued)
- [PULL 01/17] docs/devel/qapi-code-gen: Clean up use of quotes a bit, Markus Armbruster, 2023/05/09
- [PULL 10/17] tests/qapi-schema/doc-good: Improve argument description tests, Markus Armbruster, 2023/05/09
- [PULL 09/17] tests/qapi-schema/doc-good: Improve a comment, Markus Armbruster, 2023/05/09
- [PULL 07/17] qapi: Tidy up a slightly awkward TODO comment, Markus Armbruster, 2023/05/09
- [PULL 08/17] qapi/dump: Indent bulleted lists consistently, Markus Armbruster, 2023/05/09
- [PULL 05/17] Revert "qapi: BlockExportRemoveMode: move comments to TODO", Markus Armbruster, 2023/05/09
- [PULL 13/17] qapi: Relax doc string @name: description indentation rules, Markus Armbruster, 2023/05/09
- [PULL 16/17] qga/qapi-schema: Reformat doc comments to conform to current conventions, Markus Armbruster, 2023/05/09
- [PULL 06/17] sphinx/qapidoc: Do not emit TODO sections into user manuals, Markus Armbruster, 2023/05/09
- [PULL 12/17] qapi: Rewrite parsing of doc comment section symbols and tags, Markus Armbruster, 2023/05/09
- [PULL 11/17] qapi: Fix argument description indentation stripping,
Markus Armbruster <=
- [PULL 15/17] docs/devel/qapi-code-gen: Update doc comment conventions, Markus Armbruster, 2023/05/09
- [PULL 14/17] qapi: Section parameter @indent is no longer used, drop, Markus Armbruster, 2023/05/09
- [PULL 17/17] qapi: Reformat doc comments to conform to current conventions, Markus Armbruster, 2023/05/09
- Re: [PULL 00/17] QAPI patches patches for 2023-05-09, Richard Henderson, 2023/05/09