qapi: Fix to reject empty union base gracefully

Common Python pitfall: 'assert base_members' fires on [] in addition
to None.  Correct to 'assert base_members is not None'.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <1489582656-31133-10-git-send-email-armbru@redhat.com>
This commit is contained in:
Markus Armbruster 2017-03-15 13:56:58 +01:00
parent 707fb2d381
commit 4815374513
2 changed files with 2 additions and 11 deletions

View File

@ -735,7 +735,7 @@ def check_union(expr, info):
raise QAPISemError(info, "Flat union '%s' must have a base"
% name)
base_members = find_base_members(base)
assert base_members
assert base_members is not None
# The value of member 'discriminator' must name a non-optional
# member of the base struct.

View File

@ -1,10 +1 @@
Traceback (most recent call last):
File "tests/qapi-schema/test-qapi.py", line 56, in <module>
schema = QAPISchema(sys.argv[1])
File "scripts/qapi.py", line 1487, in __init__
self.exprs = check_exprs(parser.exprs)
File "scripts/qapi.py", line 921, in check_exprs
check_union(expr, info)
File "scripts/qapi.py", line 738, in check_union
assert base_members
AssertionError
tests/qapi-schema/union-base-empty.json:5: Discriminator 'type' is not a member of base struct 'Empty'