qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: richard.henderson@linaro.org, Juan Quintela <quintela@redhat.com>
Subject: [PULL 11/17] qapi: Fix argument description indentation stripping
Date: Tue,  9 May 2023 10:00:05 +0200	[thread overview]
Message-ID: <20230509080011.3231661-12-armbru@redhat.com> (raw)
In-Reply-To: <20230509080011.3231661-1-armbru@redhat.com>

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



  parent reply	other threads:[~2023-05-09  8:02 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-09  7:59 [PULL 00/17] QAPI patches patches for 2023-05-09 Markus Armbruster
2023-05-09  7:59 ` [PULL 01/17] docs/devel/qapi-code-gen: Clean up use of quotes a bit Markus Armbruster
2023-05-09  7:59 ` [PULL 02/17] docs/devel/qapi-code-gen: Turn FIXME admonitions into comments Markus Armbruster
2023-05-09  7:59 ` [PULL 03/17] qapi: Fix crash on stray double quote character Markus Armbruster
2023-05-09  7:59 ` [PULL 04/17] meson: Fix to make QAPI generator output depend on main.py Markus Armbruster
2023-05-09  7:59 ` [PULL 05/17] Revert "qapi: BlockExportRemoveMode: move comments to TODO" Markus Armbruster
2023-05-09  8:00 ` [PULL 06/17] sphinx/qapidoc: Do not emit TODO sections into user manuals Markus Armbruster
2023-05-09  8:00 ` [PULL 07/17] qapi: Tidy up a slightly awkward TODO comment Markus Armbruster
2023-05-09  8:00 ` [PULL 08/17] qapi/dump: Indent bulleted lists consistently Markus Armbruster
2023-05-09  8:00 ` [PULL 09/17] tests/qapi-schema/doc-good: Improve a comment Markus Armbruster
2023-05-09  8:00 ` [PULL 10/17] tests/qapi-schema/doc-good: Improve argument description tests Markus Armbruster
2023-05-09  8:00 ` Markus Armbruster [this message]
2023-05-09  8:00 ` [PULL 12/17] qapi: Rewrite parsing of doc comment section symbols and tags Markus Armbruster
2023-05-09  8:00 ` [PULL 13/17] qapi: Relax doc string @name: description indentation rules Markus Armbruster
2023-05-09  8:00 ` [PULL 14/17] qapi: Section parameter @indent is no longer used, drop Markus Armbruster
2023-05-09  8:00 ` [PULL 15/17] docs/devel/qapi-code-gen: Update doc comment conventions Markus Armbruster
2023-05-09  8:00 ` [PULL 16/17] qga/qapi-schema: Reformat doc comments to conform to current conventions Markus Armbruster
2023-05-09  8:00 ` [PULL 17/17] qapi: " Markus Armbruster
2023-05-09 16:20 ` [PULL 00/17] QAPI patches patches for 2023-05-09 Richard Henderson
2023-05-09 17:13   ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230509080011.3231661-12-armbru@redhat.com \
    --to=armbru@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).