aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Snow <jsnow@redhat.com>2021-09-30 16:57:08 -0400
committerMarkus Armbruster <armbru@redhat.com>2021-10-02 07:33:42 +0200
commitcd87c14cde5db42a2f13bfdbba1f3cbeb347a411 (patch)
treed8f01e07068c9d926f828f90da7ea6144c0b731f
parenta9e2eb06ed061f37c3ba6ad52722eef20afd713a (diff)
downloadqemu-cd87c14cde5db42a2f13bfdbba1f3cbeb347a411.zip
qemu-cd87c14cde5db42a2f13bfdbba1f3cbeb347a411.tar.gz
qemu-cd87c14cde5db42a2f13bfdbba1f3cbeb347a411.tar.bz2
qapi/parser: remove FIXME comment from _append_body_line
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>
-rw-r--r--scripts/qapi/parser.py6
-rw-r--r--tests/qapi-schema/doc-empty-symbol.err2
2 files changed, 5 insertions, 3 deletions
diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py
index bfd2dbf..23898ab 100644
--- a/scripts/qapi/parser.py
+++ b/scripts/qapi/parser.py
@@ -556,9 +556,11 @@ class QAPIDoc:
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 81b90e8..aa51be4 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 '@'