qapi: Catch and reject flat union branch of array type
Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
75276710ae
commit
f9a1427361
@ -580,7 +580,7 @@ def check_union(expr, expr_info):
|
||||
# Each value must name a known type; furthermore, in flat unions,
|
||||
# branches must be a struct with no overlapping member names
|
||||
check_type(expr_info, "Member '%s' of union '%s'" % (key, name),
|
||||
value, allow_array=True, allow_metas=allow_metas)
|
||||
value, allow_array=not base, allow_metas=allow_metas)
|
||||
if base:
|
||||
branch_struct = find_struct(value)
|
||||
assert branch_struct
|
||||
|
@ -1,10 +1 @@
|
||||
Traceback (most recent call last):
|
||||
File "tests/qapi-schema/test-qapi.py", line 19, in <module>
|
||||
exprs = parse_schema(sys.argv[1])
|
||||
File "scripts/qapi.py", line 760, in parse_schema
|
||||
return check_exprs(schema.exprs)
|
||||
File "scripts/qapi.py", line 743, in check_exprs
|
||||
check_union(expr, info)
|
||||
File "scripts/qapi.py", line 586, in check_union
|
||||
assert branch_struct
|
||||
AssertionError
|
||||
tests/qapi-schema/flat-union-array-branch.json:8: Member 'value1' of union 'TestUnion' cannot be an array
|
||||
|
Loading…
x
Reference in New Issue
Block a user