diff options
author | Eric Blake | 2015-11-18 09:52:49 +0100 |
---|---|---|
committer | Markus Armbruster | 2015-12-17 08:21:27 +0100 |
commit | 61a946611b77b05936c60775eaaef87b65ec9f09 (patch) | |
tree | 8c33aea7f0f66bf15778ae702586fd18b698a742 | |
parent | qapi: Hoist tag collision check to Variants.check() (diff) | |
download | qemu-61a946611b77b05936c60775eaaef87b65ec9f09.tar.gz qemu-61a946611b77b05936c60775eaaef87b65ec9f09.tar.xz qemu-61a946611b77b05936c60775eaaef87b65ec9f09.zip |
qapi: Remove outdated tests related to QMP/branch collisions
Now that branches are in a separate C namespace, we can remove
the restrictions in the parser that claim a branch name would
collide with QMP, and delete the negative tests that are no
longer problematic. A separate patch can then add positive
tests to qapi-schema-test to test that any corner cases will
compile correctly.
This reverts the scripts/qapi.py portion of commit 7b2a5c2,
now that the assertions that it plugged are no longer possible.
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1447836791-369-15-git-send-email-eblake@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
-rw-r--r-- | scripts/qapi.py | 11 | ||||
-rw-r--r-- | tests/Makefile | 3 | ||||
-rw-r--r-- | tests/qapi-schema/flat-union-clash-branch.err | 0 | ||||
-rw-r--r-- | tests/qapi-schema/flat-union-clash-branch.exit | 1 | ||||
-rw-r--r-- | tests/qapi-schema/flat-union-clash-branch.json | 18 | ||||
-rw-r--r-- | tests/qapi-schema/flat-union-clash-branch.out | 14 | ||||
-rw-r--r-- | tests/qapi-schema/flat-union-clash-type.err | 1 | ||||
-rw-r--r-- | tests/qapi-schema/flat-union-clash-type.exit | 1 | ||||
-rw-r--r-- | tests/qapi-schema/flat-union-clash-type.json | 14 | ||||
-rw-r--r-- | tests/qapi-schema/flat-union-clash-type.out | 0 | ||||
-rw-r--r-- | tests/qapi-schema/union-clash-type.err | 1 | ||||
-rw-r--r-- | tests/qapi-schema/union-clash-type.exit | 1 | ||||
-rw-r--r-- | tests/qapi-schema/union-clash-type.json | 9 | ||||
-rw-r--r-- | tests/qapi-schema/union-clash-type.out | 0 |
14 files changed, 2 insertions, 72 deletions
diff --git a/scripts/qapi.py b/scripts/qapi.py index c6f3fcee9a..6fc14beaa0 100644 --- a/scripts/qapi.py +++ b/scripts/qapi.py @@ -548,8 +548,7 @@ def check_union(expr, expr_info): base = expr.get('base') discriminator = expr.get('discriminator') members = expr['data'] - values = {'MAX': '(automatic)', 'KIND': '(automatic)', - 'TYPE': '(automatic)'} + values = {'MAX': '(automatic)'} # Two types of unions, determined by discriminator. @@ -607,19 +606,13 @@ def check_union(expr, expr_info): " of branch '%s'" % key) # If the discriminator names an enum type, then all members - # of 'data' must also be members of the enum type, which in turn - # must not collide with the discriminator name. + # of 'data' must also be members of the enum type. if enum_define: if key not in enum_define['enum_values']: raise QAPIExprError(expr_info, "Discriminator value '%s' is not found in " "enum '%s'" % (key, enum_define["enum_name"])) - if discriminator in enum_define['enum_values']: - raise QAPIExprError(expr_info, - "Discriminator name '%s' collides with " - "enum value in '%s'" % - (discriminator, enum_define["enum_name"])) # Otherwise, check for conflicts in the generated enum else: diff --git a/tests/Makefile b/tests/Makefile index a1d03b457d..6518ef9986 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -281,9 +281,7 @@ qapi-schema += flat-union-bad-base.json qapi-schema += flat-union-bad-discriminator.json qapi-schema += flat-union-base-any.json qapi-schema += flat-union-base-union.json -qapi-schema += flat-union-clash-branch.json qapi-schema += flat-union-clash-member.json -qapi-schema += flat-union-clash-type.json qapi-schema += flat-union-empty.json qapi-schema += flat-union-inline.json qapi-schema += flat-union-int-branch.json @@ -345,7 +343,6 @@ qapi-schema += union-bad-branch.json qapi-schema += union-base-no-discriminator.json qapi-schema += union-clash-branches.json qapi-schema += union-clash-data.json -qapi-schema += union-clash-type.json qapi-schema += union-empty.json qapi-schema += union-invalid-base.json qapi-schema += union-max.json diff --git a/tests/qapi-schema/flat-union-clash-branch.err b/tests/qapi-schema/flat-union-clash-branch.err deleted file mode 100644 index e69de29bb2..0000000000 --- a/tests/qapi-schema/flat-union-clash-branch.err +++ /dev/null diff --git a/tests/qapi-schema/flat-union-clash-branch.exit b/tests/qapi-schema/flat-union-clash-branch.exit deleted file mode 100644 index 573541ac97..0000000000 --- a/tests/qapi-schema/flat-union-clash-branch.exit +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/tests/qapi-schema/flat-union-clash-branch.json b/tests/qapi-schema/flat-union-clash-branch.json deleted file mode 100644 index e593336039..0000000000 --- a/tests/qapi-schema/flat-union-clash-branch.json +++ /dev/null @@ -1,18 +0,0 @@ -# Flat union branch name collision -# FIXME: this parses, but then fails to compile due to a duplicate 'c_d' -# (one from the base member, the other from the branch name). We should -# either reject the collision at parse time, or munge the generated branch -# name to allow this to compile. -{ 'enum': 'TestEnum', - 'data': [ 'base', 'c-d' ] } -{ 'struct': 'Base', - 'data': { 'enum1': 'TestEnum', '*c_d': 'str' } } -{ 'struct': 'Branch1', - 'data': { 'string': 'str' } } -{ 'struct': 'Branch2', - 'data': { 'value': 'int' } } -{ 'union': 'TestUnion', - 'base': 'Base', - 'discriminator': 'enum1', - 'data': { 'base': 'Branch1', - 'c-d': 'Branch2' } } diff --git a/tests/qapi-schema/flat-union-clash-branch.out b/tests/qapi-schema/flat-union-clash-branch.out deleted file mode 100644 index 8e0da73600..0000000000 --- a/tests/qapi-schema/flat-union-clash-branch.out +++ /dev/null @@ -1,14 +0,0 @@ -object :empty -object Base - member enum1: TestEnum optional=False - member c_d: str optional=True -object Branch1 - member string: str optional=False -object Branch2 - member value: int optional=False -enum TestEnum ['base', 'c-d'] -object TestUnion - base Base - tag enum1 - case base: Branch1 - case c-d: Branch2 diff --git a/tests/qapi-schema/flat-union-clash-type.err b/tests/qapi-schema/flat-union-clash-type.err deleted file mode 100644 index b44dd4005c..0000000000 --- a/tests/qapi-schema/flat-union-clash-type.err +++ /dev/null @@ -1 +0,0 @@ -tests/qapi-schema/flat-union-clash-type.json:11: Discriminator name 'type' collides with enum value in 'TestEnum' diff --git a/tests/qapi-schema/flat-union-clash-type.exit b/tests/qapi-schema/flat-union-clash-type.exit deleted file mode 100644 index d00491fd7e..0000000000 --- a/tests/qapi-schema/flat-union-clash-type.exit +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/tests/qapi-schema/flat-union-clash-type.json b/tests/qapi-schema/flat-union-clash-type.json deleted file mode 100644 index 8f710f08aa..0000000000 --- a/tests/qapi-schema/flat-union-clash-type.json +++ /dev/null @@ -1,14 +0,0 @@ -# Flat union branch 'type' -# Reject this, because we would have a clash in generated C, between the -# outer tag 'type' and the branch name 'type' within the union. -# TODO: We could munge the generated C branch name to let it compile. -{ 'enum': 'TestEnum', - 'data': [ 'type' ] } -{ 'struct': 'Base', - 'data': { 'type': 'TestEnum' } } -{ 'struct': 'Branch1', - 'data': { 'string': 'str' } } -{ 'union': 'TestUnion', - 'base': 'Base', - 'discriminator': 'type', - 'data': { 'type': 'Branch1' } } diff --git a/tests/qapi-schema/flat-union-clash-type.out b/tests/qapi-schema/flat-union-clash-type.out deleted file mode 100644 index e69de29bb2..0000000000 --- a/tests/qapi-schema/flat-union-clash-type.out +++ /dev/null diff --git a/tests/qapi-schema/union-clash-type.err b/tests/qapi-schema/union-clash-type.err deleted file mode 100644 index a5dead128d..0000000000 --- a/tests/qapi-schema/union-clash-type.err +++ /dev/null @@ -1 +0,0 @@ -tests/qapi-schema/union-clash-type.json:8: Union 'TestUnion' member 'kind' clashes with '(automatic)' diff --git a/tests/qapi-schema/union-clash-type.exit b/tests/qapi-schema/union-clash-type.exit deleted file mode 100644 index d00491fd7e..0000000000 --- a/tests/qapi-schema/union-clash-type.exit +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/tests/qapi-schema/union-clash-type.json b/tests/qapi-schema/union-clash-type.json deleted file mode 100644 index cfc256b04d..0000000000 --- a/tests/qapi-schema/union-clash-type.json +++ /dev/null @@ -1,9 +0,0 @@ -# Union branch 'type' -# Reject this, because we would have a clash in generated C, between the -# simple union's implicit tag member 'kind' and the branch name 'kind' -# within the union. -# TODO: Even when the generated C is switched to use 'type' rather than -# 'kind', to match the QMP spelling, the collision should still be detected. -# Or, we could munge the branch name to allow compilation. -{ 'union': 'TestUnion', - 'data': { 'kind': 'int', 'type': 'str' } } diff --git a/tests/qapi-schema/union-clash-type.out b/tests/qapi-schema/union-clash-type.out deleted file mode 100644 index e69de29bb2..0000000000 --- a/tests/qapi-schema/union-clash-type.out +++ /dev/null |