From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, John Snow <jsnow@redhat.com>
Subject: [PULL 05/13] qapi/parser: remove FIXME comment from _append_body_line
Date: Sat, 2 Oct 2021 11:56:47 +0200 [thread overview]
Message-ID: <20211002095655.1944970-6-armbru@redhat.com> (raw)
In-Reply-To: <20211002095655.1944970-1-armbru@redhat.com>
From: John Snow <jsnow@redhat.com>
True, we do not check the validity of this symbol -- but we don't check
the validity of definition names during parse, either -- that happens
later, during the expr check. I don't want to introduce a dependency on
expr.py:check_name_str here and introduce a cycle.
Instead, rest assured that a documentation block is required for each
definition. This requirement uses the names of each section to ensure
that we fulfilled this requirement.
e.g., let's say that block-core.json has a comment block for
"Snapshot!Info" by accident. We'll see this error message:
In file included from ../../qapi/block.json:8:
../../qapi/block-core.json: In struct 'SnapshotInfo':
../../qapi/block-core.json:38: documentation comment is for 'Snapshot!Info'
That's a pretty decent error message.
Now, let's say that we actually mangle it twice, identically:
../../qapi/block-core.json: In struct 'Snapshot!Info':
../../qapi/block-core.json:38: struct has an invalid name
That's also pretty decent. If we forget to fix it in both places, we'll
just be back to the first error.
Therefore, let's just drop this FIXME and adjust the error message to
not imply a more thorough check than is actually performed.
Signed-off-by: John Snow <jsnow@redhat.com>
Message-Id: <20210930205716.1148693-6-jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
scripts/qapi/parser.py | 6 ++++--
tests/qapi-schema/doc-empty-symbol.err | 2 +-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py
index bfd2dbfd9a..23898ab1dc 100644
--- a/scripts/qapi/parser.py
+++ b/scripts/qapi/parser.py
@@ -556,9 +556,11 @@ def _append_body_line(self, line):
if not line.endswith(':'):
raise QAPIParseError(self._parser, "line should end with ':'")
self.symbol = line[1:-1]
- # FIXME invalid names other than the empty string aren't flagged
+ # Invalid names are not checked here, but the name provided MUST
+ # match the following definition, which *is* validated in expr.py.
if not self.symbol:
- raise QAPIParseError(self._parser, "invalid name")
+ raise QAPIParseError(
+ self._parser, "name required after '@'")
elif self.symbol:
# This is a definition documentation block
if name.startswith('@') and name.endswith(':'):
diff --git a/tests/qapi-schema/doc-empty-symbol.err b/tests/qapi-schema/doc-empty-symbol.err
index 81b90e882a..aa51be41b2 100644
--- a/tests/qapi-schema/doc-empty-symbol.err
+++ b/tests/qapi-schema/doc-empty-symbol.err
@@ -1 +1 @@
-doc-empty-symbol.json:4:1: invalid name
+doc-empty-symbol.json:4:1: name required after '@'
--
2.31.1
next prev parent reply other threads:[~2021-10-02 10:07 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-02 9:56 [PULL 00/13] QAPI patches patches for 2021-10-02 Markus Armbruster
2021-10-02 9:56 ` [PULL 01/13] qapi/pylintrc: ignore 'consider-using-f-string' warning Markus Armbruster
2021-10-02 9:56 ` [PULL 02/13] qapi/gen: use dict.items() to iterate over _modules Markus Armbruster
2021-10-02 9:56 ` [PULL 03/13] qapi/parser: fix unused check_args_section arguments Markus Armbruster
2021-10-02 9:56 ` [PULL 04/13] qapi: Add spaces after symbol declaration for consistency Markus Armbruster
2021-10-02 9:56 ` Markus Armbruster [this message]
2021-10-02 9:56 ` [PULL 06/13] qapi/parser: clarify _end_section() logic Markus Armbruster
2021-10-02 9:56 ` [PULL 07/13] qapi/parser: Introduce NullSection Markus Armbruster
2021-10-02 9:56 ` [PULL 08/13] qapi/parser: add import cycle workaround Markus Armbruster
2021-10-02 9:56 ` [PULL 09/13] qapi/parser: add type hint annotations (QAPIDoc) Markus Armbruster
2021-10-02 9:56 ` [PULL 10/13] qapi/parser: Add FIXME for consolidating JSON-related types Markus Armbruster
2021-10-02 9:56 ` [PULL 11/13] qapi/parser: enable mypy checks Markus Armbruster
2021-10-02 9:56 ` [PULL 12/13] qapi/parser: Silence too-few-public-methods warning Markus Armbruster
2021-10-02 9:56 ` [PULL 13/13] qapi/parser: enable pylint checks Markus Armbruster
2021-10-02 20:31 ` [PULL 00/13] QAPI patches patches for 2021-10-02 Richard Henderson
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=20211002095655.1944970-6-armbru@redhat.com \
--to=armbru@redhat.com \
--cc=jsnow@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.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).