diff options
author | Markus Armbruster <armbru@redhat.com> | 2021-08-31 14:38:08 +0200 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2021-09-03 17:09:10 +0200 |
commit | 6dcf03719acc4db6db7dc307359ff67d05e74451 (patch) | |
tree | 5eff7e580f36376d092750c6f63ddc85e6e5a823 | |
parent | 9c629fa8340792cd30758b65f0593d93d7a383d7 (diff) |
qapi: Tweak error messages for missing / conflicting meta-type
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20210831123809.1107782-12-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-rw-r--r-- | scripts/qapi/expr.py | 23 | ||||
-rw-r--r-- | tests/qapi-schema/double-type.err | 4 | ||||
-rw-r--r-- | tests/qapi-schema/missing-type.err | 2 |
3 files changed, 11 insertions, 18 deletions
diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py index 9e2aa1d43a..ae4437ba08 100644 --- a/scripts/qapi/expr.py +++ b/scripts/qapi/expr.py @@ -630,20 +630,15 @@ def check_exprs(exprs: List[_JSONObject]) -> List[_JSONObject]: if 'include' in expr: continue - if 'enum' in expr: - meta = 'enum' - elif 'union' in expr: - meta = 'union' - elif 'alternate' in expr: - meta = 'alternate' - elif 'struct' in expr: - meta = 'struct' - elif 'command' in expr: - meta = 'command' - elif 'event' in expr: - meta = 'event' - else: - raise QAPISemError(info, "expression is missing metatype") + metas = expr.keys() & {'enum', 'struct', 'union', 'alternate', + 'command', 'event'} + if len(metas) != 1: + raise QAPISemError( + info, + "expression must have exactly one key" + " 'enum', 'struct', 'union', 'alternate'," + " 'command', 'event'") + meta = metas.pop() check_name_is_str(expr[meta], info, "'%s'" % meta) name = cast(str, expr[meta]) diff --git a/tests/qapi-schema/double-type.err b/tests/qapi-schema/double-type.err index 576e716197..6a1e8a5990 100644 --- a/tests/qapi-schema/double-type.err +++ b/tests/qapi-schema/double-type.err @@ -1,3 +1 @@ -double-type.json: In struct 'Bar': -double-type.json:2: struct has unknown key 'command' -Valid keys are 'base', 'data', 'features', 'if', 'struct'. +double-type.json:2: expression must have exactly one key 'enum', 'struct', 'union', 'alternate', 'command', 'event' diff --git a/tests/qapi-schema/missing-type.err b/tests/qapi-schema/missing-type.err index 5755386a18..cb39569e49 100644 --- a/tests/qapi-schema/missing-type.err +++ b/tests/qapi-schema/missing-type.err @@ -1 +1 @@ -missing-type.json:2: expression is missing metatype +missing-type.json:2: expression must have exactly one key 'enum', 'struct', 'union', 'alternate', 'command', 'event' |