diff options
author | Markus Armbruster <armbru@redhat.com> | 2024-02-27 12:39:21 +0100 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2024-03-04 07:12:40 +0100 |
commit | e1f684ea2e80800e74feeeaa36deed41cd3ff30f (patch) | |
tree | f4f6e405ed3b5a09b6529039784c61d40a582a85 | |
parent | ab07e96c46c757ac1a020bd1cf4c81633fc88750 (diff) | |
download | qemu-e1f684ea2e80800e74feeeaa36deed41cd3ff30f.zip qemu-e1f684ea2e80800e74feeeaa36deed41cd3ff30f.tar.gz qemu-e1f684ea2e80800e74feeeaa36deed41cd3ff30f.tar.bz2 |
qapi: Reject "Returns" section when command doesn't return anything
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240227113921.236097-14-armbru@redhat.com>
-rw-r--r-- | scripts/qapi/parser.py | 7 | ||||
-rw-r--r-- | tests/qapi-schema/doc-invalid-return2.err | 1 | ||||
-rw-r--r-- | tests/qapi-schema/doc-invalid-return2.json | 7 | ||||
-rw-r--r-- | tests/qapi-schema/doc-invalid-return2.out | 0 | ||||
-rw-r--r-- | tests/qapi-schema/meson.build | 1 |
5 files changed, 15 insertions, 1 deletions
diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py index a32b2c7..d8f7606 100644 --- a/scripts/qapi/parser.py +++ b/scripts/qapi/parser.py @@ -721,7 +721,12 @@ class QAPIDoc: self.features[feature.name].connect(feature) def check_expr(self, expr: QAPIExpression) -> None: - if 'command' not in expr: + if 'command' in expr: + if self.returns and 'returns' not in expr: + raise QAPISemError( + self.returns.info, + "'Returns' section, but command doesn't return anything") + else: if self.returns: raise QAPISemError( self.returns.info, diff --git a/tests/qapi-schema/doc-invalid-return2.err b/tests/qapi-schema/doc-invalid-return2.err new file mode 100644 index 0000000..c3d0c7a --- /dev/null +++ b/tests/qapi-schema/doc-invalid-return2.err @@ -0,0 +1 @@ +doc-invalid-return2.json:5: 'Returns' section, but command doesn't return anything diff --git a/tests/qapi-schema/doc-invalid-return2.json b/tests/qapi-schema/doc-invalid-return2.json new file mode 100644 index 0000000..37883d4 --- /dev/null +++ b/tests/qapi-schema/doc-invalid-return2.json @@ -0,0 +1,7 @@ +# Command doesn't return anything + +## +# @foo: +# Returns: blah +## +{ 'command': 'foo' } diff --git a/tests/qapi-schema/doc-invalid-return2.out b/tests/qapi-schema/doc-invalid-return2.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/qapi-schema/doc-invalid-return2.out diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build index 4b8329d..0f479d9 100644 --- a/tests/qapi-schema/meson.build +++ b/tests/qapi-schema/meson.build @@ -79,6 +79,7 @@ schemas = [ 'doc-invalid-end.json', 'doc-invalid-end2.json', 'doc-invalid-return.json', + 'doc-invalid-return2.json', 'doc-invalid-section.json', 'doc-invalid-start.json', 'doc-missing-colon.json', |