[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 28/37] qapi: Fix broken discriminator error messages
From: |
Markus Armbruster |
Subject: |
[PULL 28/37] qapi: Fix broken discriminator error messages |
Date: |
Tue, 24 Sep 2019 14:33:25 +0200 |
check_union() checks the discriminator exists in base and makes sense.
Two error messages mention the base. These are broken for anonymous
bases, as demonstrated by tests flat-union-invalid-discriminator and
flat-union-invalid-if-discriminator.err. The third one doesn't
bother.
First broken when commit ac4338f8eb "qapi: Allow anonymous base for
flat union" (v2.6.0) neglected to adjust the "not a member of base"
error message. Commit ccadd6bcba "qapi: Add 'if' to implicit struct
members" (v4.0.0) then cloned the flawed error message.
Dumb them down not to mention the base.
Signed-off-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
---
scripts/qapi/common.py | 9 ++++-----
tests/qapi-schema/flat-union-invalid-discriminator.err | 2 +-
tests/qapi-schema/flat-union-invalid-discriminator.json | 1 -
.../qapi-schema/flat-union-invalid-if-discriminator.err | 2 +-
.../qapi-schema/flat-union-invalid-if-discriminator.json | 1 -
tests/qapi-schema/flat-union-optional-discriminator.err | 2 +-
tests/qapi-schema/union-base-empty.err | 2 +-
7 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py
index ef7c7be4fd..a58e904978 100644
--- a/scripts/qapi/common.py
+++ b/scripts/qapi/common.py
@@ -877,14 +877,13 @@ def check_union(expr, info):
discriminator_value = base_members.get(discriminator)
if not discriminator_value:
raise QAPISemError(info,
- "Discriminator '%s' is not a member of base "
- "struct '%s'"
- % (discriminator, base))
+ "Discriminator '%s' is not a member of 'base'"
+ % discriminator)
if discriminator_value.get('if'):
raise QAPISemError(
info,
- "The discriminator %s.%s for union %s must not be conditional"
- % (base, discriminator, name))
+ "The discriminator '%s' for union %s must not be conditional"
+ % (discriminator, name))
enum_define = enum_types.get(discriminator_value['type'])
# Do not allow string discriminator
if not enum_define:
diff --git a/tests/qapi-schema/flat-union-invalid-discriminator.err
b/tests/qapi-schema/flat-union-invalid-discriminator.err
index 947a6b73aa..495d5a520e 100644
--- a/tests/qapi-schema/flat-union-invalid-discriminator.err
+++ b/tests/qapi-schema/flat-union-invalid-discriminator.err
@@ -1 +1 @@
-tests/qapi-schema/flat-union-invalid-discriminator.json:11: Discriminator
'enum_wrong' is not a member of base struct 'OrderedDict([('enum1', {'type':
'TestEnum'})])'
+tests/qapi-schema/flat-union-invalid-discriminator.json:10: Discriminator
'enum_wrong' is not a member of 'base'
diff --git a/tests/qapi-schema/flat-union-invalid-discriminator.json
b/tests/qapi-schema/flat-union-invalid-discriminator.json
index de86cf0760..c4fce97362 100644
--- a/tests/qapi-schema/flat-union-invalid-discriminator.json
+++ b/tests/qapi-schema/flat-union-invalid-discriminator.json
@@ -1,4 +1,3 @@
-# FIXME error message shows base as OrderedDict
{ 'enum': 'TestEnum',
'data': [ 'value1', 'value2' ] }
diff --git a/tests/qapi-schema/flat-union-invalid-if-discriminator.err
b/tests/qapi-schema/flat-union-invalid-if-discriminator.err
index ec04c4840c..cc5c3fb80b 100644
--- a/tests/qapi-schema/flat-union-invalid-if-discriminator.err
+++ b/tests/qapi-schema/flat-union-invalid-if-discriminator.err
@@ -1 +1 @@
-tests/qapi-schema/flat-union-invalid-if-discriminator.json:11: The
discriminator OrderedDict([('enum1', OrderedDict([('type', 'TestEnum'), ('if',
'FOO')]))]).enum1 for union TestUnion must not be conditional
+tests/qapi-schema/flat-union-invalid-if-discriminator.json:10: The
discriminator 'enum1' for union TestUnion must not be conditional
diff --git a/tests/qapi-schema/flat-union-invalid-if-discriminator.json
b/tests/qapi-schema/flat-union-invalid-if-discriminator.json
index bbaa9a3f82..e49992b798 100644
--- a/tests/qapi-schema/flat-union-invalid-if-discriminator.json
+++ b/tests/qapi-schema/flat-union-invalid-if-discriminator.json
@@ -1,4 +1,3 @@
-# FIXME error message shows base as OrderedDict
{ 'enum': 'TestEnum',
'data': [ 'value1', 'value2' ] }
diff --git a/tests/qapi-schema/flat-union-optional-discriminator.err
b/tests/qapi-schema/flat-union-optional-discriminator.err
index 8b4a4ba847..45f5407c34 100644
--- a/tests/qapi-schema/flat-union-optional-discriminator.err
+++ b/tests/qapi-schema/flat-union-optional-discriminator.err
@@ -1 +1 @@
-tests/qapi-schema/flat-union-optional-discriminator.json:7: Discriminator
'switch' is not a member of base struct 'Base'
+tests/qapi-schema/flat-union-optional-discriminator.json:7: Discriminator
'switch' is not a member of 'base'
diff --git a/tests/qapi-schema/union-base-empty.err
b/tests/qapi-schema/union-base-empty.err
index 7695806d81..9453720ede 100644
--- a/tests/qapi-schema/union-base-empty.err
+++ b/tests/qapi-schema/union-base-empty.err
@@ -1 +1 @@
-tests/qapi-schema/union-base-empty.json:5: Discriminator 'type' is not a
member of base struct 'Empty'
+tests/qapi-schema/union-base-empty.json:5: Discriminator 'type' is not a
member of 'base'
--
2.21.0
- [PULL 15/37] docs/devel/qapi-code-gen: Rewrite compatibility considerations, (continued)
- [PULL 15/37] docs/devel/qapi-code-gen: Rewrite compatibility considerations, Markus Armbruster, 2019/09/24
- [PULL 20/37] tests/qapi-schema: Delete two redundant tests, Markus Armbruster, 2019/09/24
- [PULL 24/37] tests/qapi-schema: Demonstrate suboptimal lexical errors, Markus Armbruster, 2019/09/24
- [PULL 09/37] qapi: Drop support for escape sequences other than \\, Markus Armbruster, 2019/09/24
- [PULL 21/37] tests/qapi-schema: Demonstrate misleading optional tag error, Markus Armbruster, 2019/09/24
- [PULL 16/37] docs/devel/qapi-code-gen: Rewrite introduction to schema, Markus Armbruster, 2019/09/24
- [PULL 18/37] qapi: Tweak code to match docs/devel/qapi-code-gen.txt, Markus Armbruster, 2019/09/24
- [PULL 25/37] qapi: Use quotes more consistently in frontend error messages, Markus Armbruster, 2019/09/24
- [PULL 17/37] docs/devel/qapi-code-gen: Improve QAPI schema language doc, Markus Armbruster, 2019/09/24
- [PULL 31/37] qapi: Normalize 'if' in check_exprs(), like other sugar, Markus Armbruster, 2019/09/24
- [PULL 28/37] qapi: Fix broken discriminator error messages,
Markus Armbruster <=
- [PULL 08/37] qapi: Restrict strings to printable ASCII, Markus Armbruster, 2019/09/24
- [PULL 36/37] qapi: Fix excessive QAPISchemaEntity.check() recursion, Markus Armbruster, 2019/09/24
- [PULL 30/37] qapi: Fix missing 'if' checks in struct, union, alternate 'data', Markus Armbruster, 2019/09/24
- [PULL 23/37] tests/qapi-schema: Demonstrate insufficient 'if' checking, Markus Armbruster, 2019/09/24
- [PULL 14/37] docs/devel/qapi-code-gen: Reorder sections for readability, Markus Armbruster, 2019/09/24
- Re: [PULL 00/37] QAPI patches for 2019-09-24, no-reply, 2019/09/24
- Re: [PULL 00/37] QAPI patches for 2019-09-24, no-reply, 2019/09/25
- Re: [PULL 00/37] QAPI patches for 2019-09-24, Peter Maydell, 2019/09/26