Skip to content

Commit

Permalink
qapi: Catch and reject flat union branch of array type
Browse files Browse the repository at this point in the history
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
  • Loading branch information
Markus Armbruster committed Jun 18, 2015
1 parent 7527671 commit f9a1427
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 11 deletions.
2 changes: 1 addition & 1 deletion scripts/qapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 1 addition & 10 deletions tests/qapi-schema/flat-union-array-branch.err
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit f9a1427

Please sign in to comment.