提交 f9a14273 编写于 作者: M Markus Armbruster

qapi: Catch and reject flat union branch of array type

Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
Reviewed-by: NEric Blake <eblake@redhat.com>
上级 75276710
......@@ -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
......
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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册