aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2021-09-17 16:31:28 +0200
committerMarkus Armbruster <armbru@redhat.com>2021-09-27 08:23:25 +0200
commit54501863376eff16973648523afeed76d4d28106 (patch)
treedba8ab5d4c836d934b178bcf1953e0ef702dda7c
parentdef1d1f57188b6e5523042f3a6ae2ab61065d075 (diff)
tests/qapi-schema: Rewrite simple union TestIfUnion to be flat
Simple unions predate flat unions. Having both complicates the QAPI schema language and the QAPI generator. We haven't been using simple unions in new code for a long time, because they are less flexible and somewhat awkward on the wire. To prepare for their removal, rewrite TestIfUnion to be flat. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20210917143134.412106-18-armbru@redhat.com>
-rw-r--r--tests/qapi-schema/qapi-schema-test.json4
-rw-r--r--tests/qapi-schema/qapi-schema-test.out16
2 files changed, 9 insertions, 11 deletions
diff --git a/tests/qapi-schema/qapi-schema-test.json b/tests/qapi-schema/qapi-schema-test.json
index eae43f41c4..ef17ab1aae 100644
--- a/tests/qapi-schema/qapi-schema-test.json
+++ b/tests/qapi-schema/qapi-schema-test.json
@@ -229,8 +229,10 @@
'if': 'TEST_IF_ENUM' }
{ 'union': 'TestIfUnion',
+ 'base': { 'type': 'TestIfEnum' },
+ 'discriminator': 'type',
'data': { 'foo': 'TestStruct',
- 'bar': { 'type': 'str', 'if': 'TEST_IF_UNION_BAR'} },
+ 'bar': { 'type': 'UserDefZero', 'if': 'TEST_IF_ENUM_BAR'} },
'if': { 'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT'] } }
{ 'command': 'test-if-union-cmd',
diff --git a/tests/qapi-schema/qapi-schema-test.out b/tests/qapi-schema/qapi-schema-test.out
index e43073d795..07e4161331 100644
--- a/tests/qapi-schema/qapi-schema-test.out
+++ b/tests/qapi-schema/qapi-schema-test.out
@@ -257,19 +257,15 @@ enum TestIfEnum
member bar
if TEST_IF_ENUM_BAR
if TEST_IF_ENUM
-object q_obj_TestStruct-wrapper
- member data: TestStruct optional=False
-enum TestIfUnionKind
- member foo
- member bar
- if TEST_IF_UNION_BAR
+object q_obj_TestIfUnion-base
+ member type: TestIfEnum optional=False
if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
object TestIfUnion
- member type: TestIfUnionKind optional=False
+ base q_obj_TestIfUnion-base
tag type
- case foo: q_obj_TestStruct-wrapper
- case bar: q_obj_str-wrapper
- if TEST_IF_UNION_BAR
+ case foo: TestStruct
+ case bar: UserDefZero
+ if TEST_IF_ENUM_BAR
if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
object q_obj_test-if-union-cmd-arg
member union-cmd-arg: TestIfUnion optional=False