[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 05/13] qapi/parser: remove FIXME comment from _append_body_lin
From: |
John Snow |
Subject: |
[PATCH v4 05/13] qapi/parser: remove FIXME comment from _append_body_line |
Date: |
Thu, 30 Sep 2021 16:57:08 -0400 |
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>
---
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 bfd2dbfd9a2..23898ab1dcd 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 81b90e882a7..aa51be41b2d 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
- [PATCH v4 00/13] qapi: static typing conversion, pt5b, John Snow, 2021/09/30
- [PATCH v4 01/13] qapi/pylintrc: ignore 'consider-using-f-string' warning, John Snow, 2021/09/30
- [PATCH v4 02/13] qapi/gen: use dict.items() to iterate over _modules, John Snow, 2021/09/30
- [PATCH v4 04/13] qapi: Add spaces after symbol declaration for consistency, John Snow, 2021/09/30
- [PATCH v4 05/13] qapi/parser: remove FIXME comment from _append_body_line,
John Snow <=
- [PATCH v4 03/13] qapi/parser: fix unused check_args_section arguments, John Snow, 2021/09/30
- [PATCH v4 06/13] qapi/parser: clarify _end_section() logic, John Snow, 2021/09/30
- [PATCH v4 07/13] qapi/parser: Introduce NullSection, John Snow, 2021/09/30
- [PATCH v4 08/13] qapi/parser: add import cycle workaround, John Snow, 2021/09/30
- [PATCH v4 11/13] qapi/parser: enable mypy checks, John Snow, 2021/09/30
- [PATCH v4 10/13] qapi/parser: Add FIXME for consolidating JSON-related types, John Snow, 2021/09/30
- [PATCH v4 12/13] qapi/parser: Silence too-few-public-methods warning, John Snow, 2021/09/30
- [PATCH v4 13/13] qapi/parser: enable pylint checks, John Snow, 2021/09/30
- [PATCH v4 09/13] qapi/parser: add type hint annotations (QAPIDoc), John Snow, 2021/09/30