diff options
author | Eric Blake <eblake@redhat.com> | 2015-09-29 16:21:07 -0600 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2015-10-12 18:46:49 +0200 |
commit | 376863ef4895ae709aadb6f26365a5973310ef09 (patch) | |
tree | c12bb1e568857c788a7dc6bfad1e3dc32c7c61e9 /scripts | |
parent | 9c51b4412959c5331a8a931d848c4b755b5bb36a (diff) |
qapi: Reuse code for flat union base validation
Rather than open-code the check for a valid base type, we
should reuse the common functionality. This allows for
consistent error messages, and also makes it easier for a
later patch to turn on support for inline anonymous base
structures.
Test flat-union-inline is updated to test only one feature
(anonymous branch dictionaries), which can be implemented
independently (test flat-union-bad-base already covers the
idea of an anonymous base dictionary).
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1443565276-4535-10-git-send-email-eblake@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/qapi.py | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/scripts/qapi.py b/scripts/qapi.py index 8d2681b24b..c0728d73e1 100644 --- a/scripts/qapi.py +++ b/scripts/qapi.py @@ -560,15 +560,14 @@ def check_union(expr, expr_info): # Else, it's a flat union. else: # The object must have a string member 'base'. - if not isinstance(base, str): + check_type(expr_info, "'base' for union '%s'" % name, + base, allow_metas=['struct']) + if not base: raise QAPIExprError(expr_info, - "Flat union '%s' must have a string base field" + "Flat union '%s' must have a base" % name) base_fields = find_base_fields(base) - if not base_fields: - raise QAPIExprError(expr_info, - "Base '%s' is not a valid struct" - % base) + assert base_fields # The value of member 'discriminator' must name a non-optional # member of the base struct. |