]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
qapi: Catch and reject flat union branch of array type
authorMarkus Armbruster <armbru@redhat.com>
Wed, 10 Jun 2015 11:07:43 +0000 (13:07 +0200)
committerMarkus Armbruster <armbru@redhat.com>
Thu, 18 Jun 2015 12:19:47 +0000 (14:19 +0200)
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
scripts/qapi.py
tests/qapi-schema/flat-union-array-branch.err

index 8f2326716c5822ff4df2539deb64623a612217a9..06d7fc2848fac96b176d8e797e90f9b2bea7c7fb 100644 (file)
@@ -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
index b45ef43e512c1b3dae952a7074e9b0699b9797f8..8ea91eadb2dfff257adb802d4e09183528943555 100644 (file)
@@ -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