From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: richard.henderson@linaro.org,
"Daniel P . Berrangé" <berrange@redhat.com>
Subject: [PULL 16/17] qapi: Improve specificity of type/member descriptions
Date: Wed, 26 Apr 2023 07:57:43 +0200 [thread overview]
Message-ID: <20230426055744.1041930-17-armbru@redhat.com> (raw)
In-Reply-To: <20230426055744.1041930-1-armbru@redhat.com>
Error messages describe object members, enumeration values, features,
and variants like ROLE 'NAME', where ROLE is "member", "value",
"feature", or "branch", respectively. When the member is defined in
another type, e.g. inherited from a base type, we add "of type
'TYPE'". Example: test case struct-base-clash-deep reports a member
of type 'Sub' clashing with a member of its base type 'Base' as
struct-base-clash-deep.json: In struct 'Sub':
struct-base-clash-deep.json:10: member 'name' collides with member 'name' of type 'Base'
Members of implicitly defined types need special treatment. We don't
want to add "of type 'TYPE'" for them, because their named are made up
and mean nothing to the user. Instead, we describe members of an
implicitly defined base type as "base member 'NAME'", and command and
event parameters as "parameter 'NAME'". Example: test case
union-bad-base reports member of a variant's type clashing with a
member of its implicitly defined base type as
union-bad-base.json: In union 'TestUnion':
union-bad-base.json:8: member 'string' of type 'TestTypeA' collides with base member 'string'
The next commit will permit unions as variant types. "base member
'NAME' would then be ambigious: is it the union's base, or is it the
union's variant's base? One of its test cases would report a clash
between two such bases as "base member 'type' collides with base
member 'type'". Confusing.
Refine the special treatment: add "of TYPE" even for implicitly
defined types, but massage TYPE and ROLE so they make sense for the
user.
Message-Id: <20230420102619.348173-3-berrange@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
scripts/qapi/schema.py | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py
index 8f31f8832f..27e336577f 100644
--- a/scripts/qapi/schema.py
+++ b/scripts/qapi/schema.py
@@ -701,6 +701,7 @@ def connect_doc(self, doc):
def describe(self, info):
role = self.role
+ meta = 'type'
defined_in = self.defined_in
assert defined_in
@@ -712,13 +713,17 @@ def describe(self, info):
# Implicit type created for a command's dict 'data'
assert role == 'member'
role = 'parameter'
+ meta = 'command'
+ defined_in = defined_in[:-4]
elif defined_in.endswith('-base'):
# Implicit type created for a union's dict 'base'
role = 'base ' + role
+ defined_in = defined_in[:-5]
else:
assert False
- elif defined_in != info.defn_name:
- return "%s '%s' of type '%s'" % (role, self.name, defined_in)
+
+ if defined_in != info.defn_name:
+ return "%s '%s' of %s '%s'" % (role, self.name, meta, defined_in)
return "%s '%s'" % (role, self.name)
--
2.39.2
next prev parent reply other threads:[~2023-04-26 6:00 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-26 5:57 [PULL 00/17] QAPI patches patches for 2023-04-26 Markus Armbruster
2023-04-26 5:57 ` [PULL 01/17] qapi: Fix error message format regression Markus Armbruster
2023-04-26 5:57 ` [PULL 02/17] qapi/schema: Use super() Markus Armbruster
2023-04-26 5:57 ` [PULL 03/17] qapi: Clean up after removal of simple unions Markus Armbruster
2023-04-26 5:57 ` [PULL 04/17] qapi: Split up check_type() Markus Armbruster
2023-04-26 5:57 ` [PULL 05/17] qapi: Improve error message for unexpected array types Markus Armbruster
2023-04-26 5:57 ` [PULL 06/17] qapi: Simplify code a bit after previous commits Markus Armbruster
2023-04-26 5:57 ` [PULL 07/17] qapi: Fix error message when type name or array is expected Markus Armbruster
2023-04-26 5:57 ` [PULL 08/17] qapi: Fix to reject 'data': 'mumble' in struct Markus Armbruster
2023-04-26 5:57 ` [PULL 09/17] tests/qapi-schema: Improve union discriminator coverage Markus Armbruster
2023-04-26 5:57 ` [PULL 10/17] tests/qapi-schema: Rename a few conditionals Markus Armbruster
2023-04-26 5:57 ` [PULL 11/17] tests/qapi-schema: Clean up positive test for conditionals Markus Armbruster
2023-04-26 5:57 ` [PULL 12/17] tests/qapi-schema: Cover optional conditional struct member Markus Armbruster
2023-04-26 5:57 ` [PULL 13/17] qapi: Fix code generated for " Markus Armbruster
2023-04-26 5:57 ` [PULL 14/17] qapi: Require boxed for conditional command and event arguments Markus Armbruster
2023-04-26 5:57 ` [PULL 15/17] qapi: support updating expected test output via make Markus Armbruster
2023-04-26 5:57 ` Markus Armbruster [this message]
2023-04-26 5:57 ` [PULL 17/17] qapi: allow unions to contain further unions Markus Armbruster
2023-04-26 11:07 ` [PULL 00/17] QAPI patches patches for 2023-04-26 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=20230426055744.1041930-17-armbru@redhat.com \
--to=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=qemu-devel@nongnu.org \
--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).