diff options
author | Markus Armbruster <armbru@redhat.com> | 2019-09-14 17:34:57 +0200 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2019-09-24 14:07:23 +0200 |
commit | 887a2069f76fa99b9755467126dd171a9bad34a3 (patch) | |
tree | 44ca21e5641e1442da0ef61f9174e99b9da7726a /scripts | |
parent | 9d55380b5aecd4ae5324e7d4ab0a7dfc510b634d (diff) | |
download | qemu-887a2069f76fa99b9755467126dd171a9bad34a3.zip qemu-887a2069f76fa99b9755467126dd171a9bad34a3.tar.gz qemu-887a2069f76fa99b9755467126dd171a9bad34a3.tar.bz2 |
qapi: Fix broken discriminator error messages
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 <armbru@redhat.com>
Message-Id: <20190914153506.2151-11-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/qapi/common.py | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py index ef7c7be..a58e904 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: |