mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
tests/qapi-schema: Demonstrate misleading optional tag error
Test flat-union-optional-discriminator declares its union tag as '*switch': 'Enum', and points to it with 'discriminator': '*switch'. This gets rejected as "discriminator of flat union 'MyUnion' uses invalid name '*switch'". Correct; member 'discriminator' doesn't accept a '*' prefix. However, this merely tests name validity checking, which we already cover elsewhere. More interesting is testing the valid name 'switch'. This reports "discriminator 'switch' is not a member of base struct 'Base'", which is misleading. Copy the existing 'discriminator': '*switch' test to flat-union-discriminator-bad-name, and rewrite its comment. Change flat-union-optional-discriminator to test 'discriminator': 'switch', and mark it FIXME. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20190914153506.2151-4-armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
352ada9ad4
commit
cd346bdc46
@ -388,6 +388,7 @@ 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-member.json
|
||||
qapi-schema += flat-union-discriminator-bad-name.json
|
||||
qapi-schema += flat-union-empty.json
|
||||
qapi-schema += flat-union-inline.json
|
||||
qapi-schema += flat-union-inline-invalid-dict.json
|
||||
|
1
tests/qapi-schema/flat-union-discriminator-bad-name.err
Normal file
1
tests/qapi-schema/flat-union-discriminator-bad-name.err
Normal file
@ -0,0 +1 @@
|
||||
tests/qapi-schema/flat-union-discriminator-bad-name.json:7: Discriminator of flat union 'MyUnion' does not allow optional name '*switch'
|
1
tests/qapi-schema/flat-union-discriminator-bad-name.exit
Normal file
1
tests/qapi-schema/flat-union-discriminator-bad-name.exit
Normal file
@ -0,0 +1 @@
|
||||
1
|
11
tests/qapi-schema/flat-union-discriminator-bad-name.json
Normal file
11
tests/qapi-schema/flat-union-discriminator-bad-name.json
Normal file
@ -0,0 +1,11 @@
|
||||
# discriminator '*switch' isn't a member of base, 'switch' is
|
||||
# reports "does not allow optional name", which is good enough
|
||||
{ 'enum': 'Enum', 'data': [ 'one', 'two' ] }
|
||||
{ 'struct': 'Base',
|
||||
'data': { '*switch': 'Enum' } }
|
||||
{ 'struct': 'Branch', 'data': { 'name': 'str' } }
|
||||
{ 'union': 'MyUnion',
|
||||
'base': 'Base',
|
||||
'discriminator': '*switch',
|
||||
'data': { 'one': 'Branch',
|
||||
'two': 'Branch' } }
|
@ -1 +1 @@
|
||||
tests/qapi-schema/flat-union-optional-discriminator.json:6: Discriminator of flat union 'MyUnion' does not allow optional name '*switch'
|
||||
tests/qapi-schema/flat-union-optional-discriminator.json:7: Discriminator 'switch' is not a member of base struct 'Base'
|
||||
|
@ -1,10 +1,11 @@
|
||||
# we require the discriminator to be non-optional
|
||||
# FIXME reports "discriminator 'switch' is not a member of base struct 'Base'"
|
||||
{ 'enum': 'Enum', 'data': [ 'one', 'two' ] }
|
||||
{ 'struct': 'Base',
|
||||
'data': { '*switch': 'Enum' } }
|
||||
{ 'struct': 'Branch', 'data': { 'name': 'str' } }
|
||||
{ 'union': 'MyUnion',
|
||||
'base': 'Base',
|
||||
'discriminator': '*switch',
|
||||
'discriminator': 'switch',
|
||||
'data': { 'one': 'Branch',
|
||||
'two': 'Branch' } }
|
||||
|
Loading…
Reference in New Issue
Block a user