提交 87c16dce 编写于 作者: M Markus Armbruster

qapi: Back out doc comments added just to please qapi.py

This reverts commit 3313b612's changes to tests/qapi-schema/, except
for tests/qapi-schema/doc-*.

We could keep some of these doc comments to serve as positive test
cases.  However, they don't actually add to what we get from doc
comment use in actual schemas, as we we don't test output matches
expectations, and don't systematically cover doc comment features.
Proper positive test coverage would be nice.
Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
Reviewed-by: NEric Blake <eblake@redhat.com>
Message-Id: <1489582656-31133-4-git-send-email-armbru@redhat.com>
上级 bc52d03f
tests/qapi-schema/alternate-any.json:6: Alternate 'Alt' member 'one' cannot use type 'any' tests/qapi-schema/alternate-any.json:2: Alternate 'Alt' member 'one' cannot use type 'any'
# we do not allow the 'any' type as an alternate branch # we do not allow the 'any' type as an alternate branch
##
# @Alt:
##
{ 'alternate': 'Alt', { 'alternate': 'Alt',
'data': { 'one': 'any', 'data': { 'one': 'any',
'two': 'int' } } 'two': 'int' } }
tests/qapi-schema/alternate-array.json:12: Member 'two' of alternate 'Alt' cannot be an array tests/qapi-schema/alternate-array.json:5: Member 'two' of alternate 'Alt' cannot be an array
# we do not allow array branches in alternates # we do not allow array branches in alternates
##
# @One:
##
# TODO: should we support this? # TODO: should we support this?
{ 'struct': 'One', { 'struct': 'One',
'data': { 'name': 'str' } } 'data': { 'name': 'str' } }
##
# @Alt:
##
{ 'alternate': 'Alt', { 'alternate': 'Alt',
'data': { 'one': 'One', 'data': { 'one': 'One',
'two': [ 'int' ] } } 'two': [ 'int' ] } }
tests/qapi-schema/alternate-base.json:11: Unknown key 'base' in alternate 'Alt' tests/qapi-schema/alternate-base.json:4: Unknown key 'base' in alternate 'Alt'
# we reject alternate with base type # we reject alternate with base type
##
# @Base:
##
{ 'struct': 'Base', { 'struct': 'Base',
'data': { 'string': 'str' } } 'data': { 'string': 'str' } }
##
# @Alt:
##
{ 'alternate': 'Alt', { 'alternate': 'Alt',
'base': 'Base', 'base': 'Base',
'data': { 'number': 'int' } } 'data': { 'number': 'int' } }
tests/qapi-schema/alternate-clash.json:11: 'a_b' (branch of Alt1) collides with 'a-b' (branch of Alt1) tests/qapi-schema/alternate-clash.json:7: 'a_b' (branch of Alt1) collides with 'a-b' (branch of Alt1)
...@@ -4,9 +4,5 @@ ...@@ -4,9 +4,5 @@
# TODO: In the future, if alternates are simplified to not generate # TODO: In the future, if alternates are simplified to not generate
# the implicit Alt1Kind enum, we would still have a collision with the # the implicit Alt1Kind enum, we would still have a collision with the
# resulting C union trying to have two members named 'a_b'. # resulting C union trying to have two members named 'a_b'.
##
# @Alt1:
##
{ 'alternate': 'Alt1', { 'alternate': 'Alt1',
'data': { 'a-b': 'str', 'a_b': 'int' } } 'data': { 'a-b': 'str', 'a_b': 'int' } }
tests/qapi-schema/alternate-conflict-dict.json:16: Alternate 'Alt' member 'two' can't be distinguished from member 'one' tests/qapi-schema/alternate-conflict-dict.json:6: Alternate 'Alt' member 'two' can't be distinguished from member 'one'
# we reject alternates with multiple object branches # we reject alternates with multiple object branches
##
# @One:
##
{ 'struct': 'One', { 'struct': 'One',
'data': { 'name': 'str' } } 'data': { 'name': 'str' } }
##
# @Two:
##
{ 'struct': 'Two', { 'struct': 'Two',
'data': { 'value': 'int' } } 'data': { 'value': 'int' } }
##
# @Alt:
##
{ 'alternate': 'Alt', { 'alternate': 'Alt',
'data': { 'one': 'One', 'data': { 'one': 'One',
'two': 'Two' } } 'two': 'Two' } }
tests/qapi-schema/alternate-conflict-string.json:11: Alternate 'Alt' member 'two' can't be distinguished from member 'one' tests/qapi-schema/alternate-conflict-string.json:4: Alternate 'Alt' member 'two' can't be distinguished from member 'one'
# we reject alternates with multiple string-like branches # we reject alternates with multiple string-like branches
##
# @Enum:
##
{ 'enum': 'Enum', { 'enum': 'Enum',
'data': [ 'hello', 'world' ] } 'data': [ 'hello', 'world' ] }
##
# @Alt:
##
{ 'alternate': 'Alt', { 'alternate': 'Alt',
'data': { 'one': 'str', 'data': { 'one': 'str',
'two': 'Enum' } } 'two': 'Enum' } }
tests/qapi-schema/alternate-empty.json:6: Alternate 'Alt' should have at least two branches in 'data' tests/qapi-schema/alternate-empty.json:2: Alternate 'Alt' should have at least two branches in 'data'
# alternates must list at least two types to be useful # alternates must list at least two types to be useful
##
# @Alt:
##
{ 'alternate': 'Alt', 'data': { 'i': 'int' } } { 'alternate': 'Alt', 'data': { 'i': 'int' } }
tests/qapi-schema/alternate-nested.json:11: Member 'nested' of alternate 'Alt2' cannot use alternate type 'Alt1' tests/qapi-schema/alternate-nested.json:4: Member 'nested' of alternate 'Alt2' cannot use alternate type 'Alt1'
# we reject a nested alternate branch # we reject a nested alternate branch
##
# @Alt1:
##
{ 'alternate': 'Alt1', { 'alternate': 'Alt1',
'data': { 'name': 'str', 'value': 'int' } } 'data': { 'name': 'str', 'value': 'int' } }
##
# @Alt2:
##
{ 'alternate': 'Alt2', { 'alternate': 'Alt2',
'data': { 'nested': 'Alt1', 'b': 'bool' } } 'data': { 'nested': 'Alt1', 'b': 'bool' } }
tests/qapi-schema/alternate-unknown.json:6: Member 'unknown' of alternate 'Alt' uses unknown type 'MissingType' tests/qapi-schema/alternate-unknown.json:2: Member 'unknown' of alternate 'Alt' uses unknown type 'MissingType'
# we reject an alternate with unknown type in branch # we reject an alternate with unknown type in branch
##
# @Alt:
##
{ 'alternate': 'Alt', { 'alternate': 'Alt',
'data': { 'unknown': 'MissingType', 'i': 'int' } } 'data': { 'unknown': 'MissingType', 'i': 'int' } }
tests/qapi-schema/args-alternate.json:11: 'data' for command 'oops' cannot use alternate type 'Alt' tests/qapi-schema/args-alternate.json:3: 'data' for command 'oops' cannot use alternate type 'Alt'
# we do not allow alternate arguments # we do not allow alternate arguments
##
# @Alt:
##
{ 'alternate': 'Alt', 'data': { 'case1': 'int', 'case2': 'str' } } { 'alternate': 'Alt', 'data': { 'case1': 'int', 'case2': 'str' } }
##
# @oops:
##
{ 'command': 'oops', 'data': 'Alt' } { 'command': 'oops', 'data': 'Alt' }
tests/qapi-schema/args-any.json:6: 'data' for command 'oops' cannot use built-in type 'any' tests/qapi-schema/args-any.json:2: 'data' for command 'oops' cannot use built-in type 'any'
# we do not allow an 'any' argument # we do not allow an 'any' argument
##
# @oops:
##
{ 'command': 'oops', 'data': 'any' } { 'command': 'oops', 'data': 'any' }
tests/qapi-schema/args-array-empty.json:6: Member 'empty' of 'data' for command 'oops': array type must contain single type name tests/qapi-schema/args-array-empty.json:2: Member 'empty' of 'data' for command 'oops': array type must contain single type name
# we reject an array for data if it does not contain a known type # we reject an array for data if it does not contain a known type
##
# @oops:
##
{ 'command': 'oops', 'data': { 'empty': [ ] } } { 'command': 'oops', 'data': { 'empty': [ ] } }
tests/qapi-schema/args-array-unknown.json:6: Member 'array' of 'data' for command 'oops' uses unknown type 'NoSuchType' tests/qapi-schema/args-array-unknown.json:2: Member 'array' of 'data' for command 'oops' uses unknown type 'NoSuchType'
# we reject an array for data if it does not contain a known type # we reject an array for data if it does not contain a known type
##
# @oops:
##
{ 'command': 'oops', 'data': { 'array': [ 'NoSuchType' ] } } { 'command': 'oops', 'data': { 'array': [ 'NoSuchType' ] } }
tests/qapi-schema/args-bad-boxed.json:6: 'boxed' of command 'foo' should only use true value tests/qapi-schema/args-bad-boxed.json:2: 'boxed' of command 'foo' should only use true value
# 'boxed' should only appear with value true # 'boxed' should only appear with value true
##
# @foo:
##
{ 'command': 'foo', 'boxed': false } { 'command': 'foo', 'boxed': false }
tests/qapi-schema/args-boxed-anon.json:6: 'data' for command 'foo' should be a type name tests/qapi-schema/args-boxed-anon.json:2: 'data' for command 'foo' should be a type name
# 'boxed' can only be used with named types # 'boxed' can only be used with named types
##
# @foo:
##
{ 'command': 'foo', 'boxed': true, 'data': { 'string': 'str' } } { 'command': 'foo', 'boxed': true, 'data': { 'string': 'str' } }
tests/qapi-schema/args-boxed-empty.json:11: Cannot use 'boxed' with empty type tests/qapi-schema/args-boxed-empty.json:3: Cannot use 'boxed' with empty type
# 'boxed' requires a non-empty type # 'boxed' requires a non-empty type
##
# @Empty:
##
{ 'struct': 'Empty', 'data': {} } { 'struct': 'Empty', 'data': {} }
##
# @foo:
##
{ 'command': 'foo', 'boxed': true, 'data': 'Empty' } { 'command': 'foo', 'boxed': true, 'data': 'Empty' }
tests/qapi-schema/args-boxed-string.json:6: 'data' for command 'foo' cannot use built-in type 'str' tests/qapi-schema/args-boxed-string.json:2: 'data' for command 'foo' cannot use built-in type 'str'
# 'boxed' requires a complex (not built-in) type # 'boxed' requires a complex (not built-in) type
##
# @foo:
##
{ 'command': 'foo', 'boxed': true, 'data': 'str' } { 'command': 'foo', 'boxed': true, 'data': 'str' }
tests/qapi-schema/args-int.json:6: 'data' for command 'oops' cannot use built-in type 'int' tests/qapi-schema/args-int.json:2: 'data' for command 'oops' cannot use built-in type 'int'
# we reject commands where data is not an array or complex type # we reject commands where data is not an array or complex type
##
# @oops:
##
{ 'command': 'oops', 'data': 'int' } { 'command': 'oops', 'data': 'int' }
tests/qapi-schema/args-invalid.json:4: 'data' for command 'foo' should be a dictionary or type name tests/qapi-schema/args-invalid.json:1: 'data' for command 'foo' should be a dictionary or type name
##
# @foo:
##
{ 'command': 'foo', { 'command': 'foo',
'data': false } 'data': false }
tests/qapi-schema/args-member-array-bad.json:6: Member 'member' of 'data' for command 'oops': array type must contain single type name tests/qapi-schema/args-member-array-bad.json:2: Member 'member' of 'data' for command 'oops': array type must contain single type name
# we reject data if it does not contain a valid array type # we reject data if it does not contain a valid array type
##
# @oops:
##
{ 'command': 'oops', 'data': { 'member': [ { 'nested': 'str' } ] } } { 'command': 'oops', 'data': { 'member': [ { 'nested': 'str' } ] } }
tests/qapi-schema/args-member-case.json:6: 'Arg' (parameter of no-way-this-will-get-whitelisted) should not use uppercase tests/qapi-schema/args-member-case.json:2: 'Arg' (parameter of no-way-this-will-get-whitelisted) should not use uppercase
# Member names should be 'lower-case' unless the struct/command is whitelisted # Member names should be 'lower-case' unless the struct/command is whitelisted
##
# @no-way-this-will-get-whitelisted:
##
{ 'command': 'no-way-this-will-get-whitelisted', 'data': { 'Arg': 'int' } } { 'command': 'no-way-this-will-get-whitelisted', 'data': { 'Arg': 'int' } }
tests/qapi-schema/args-member-unknown.json:6: Member 'member' of 'data' for command 'oops' uses unknown type 'NoSuchType' tests/qapi-schema/args-member-unknown.json:2: Member 'member' of 'data' for command 'oops' uses unknown type 'NoSuchType'
# we reject data if it does not contain a known type # we reject data if it does not contain a known type
##
# @oops:
##
{ 'command': 'oops', 'data': { 'member': 'NoSuchType' } } { 'command': 'oops', 'data': { 'member': 'NoSuchType' } }
tests/qapi-schema/args-name-clash.json:8: 'a_b' (parameter of oops) collides with 'a-b' (parameter of oops) tests/qapi-schema/args-name-clash.json:4: 'a_b' (parameter of oops) collides with 'a-b' (parameter of oops)
# C member name collision # C member name collision
# Reject members that clash when mapped to C names (we would have two 'a_b' # Reject members that clash when mapped to C names (we would have two 'a_b'
# members). # members).
##
# @oops:
##
{ 'command': 'oops', 'data': { 'a-b': 'str', 'a_b': 'str' } } { 'command': 'oops', 'data': { 'a-b': 'str', 'a_b': 'str' } }
tests/qapi-schema/args-union.json:10: 'data' for command 'oops' cannot use union type 'Uni' tests/qapi-schema/args-union.json:3: 'data' for command 'oops' cannot use union type 'Uni'
# use of union arguments requires 'boxed':true # use of union arguments requires 'boxed':true
##
# @Uni:
##
{ 'union': 'Uni', 'data': { 'case1': 'int', 'case2': 'str' } } { 'union': 'Uni', 'data': { 'case1': 'int', 'case2': 'str' } }
##
# oops:
##
{ 'command': 'oops', 'data': 'Uni' } { 'command': 'oops', 'data': 'Uni' }
tests/qapi-schema/args-unknown.json:6: 'data' for command 'oops' uses unknown type 'NoSuchType' tests/qapi-schema/args-unknown.json:2: 'data' for command 'oops' uses unknown type 'NoSuchType'
# we reject data if it does not contain a known type # we reject data if it does not contain a known type
##
# @oops:
##
{ 'command': 'oops', 'data': 'NoSuchType' } { 'command': 'oops', 'data': 'NoSuchType' }
tests/qapi-schema/bad-base.json:10: 'base' for struct 'MyType' cannot use union type 'Union' tests/qapi-schema/bad-base.json:3: 'base' for struct 'MyType' cannot use union type 'Union'
# we reject a base that is not a struct # we reject a base that is not a struct
##
# @Union:
##
{ 'union': 'Union', 'data': { 'a': 'int', 'b': 'str' } } { 'union': 'Union', 'data': { 'a': 'int', 'b': 'str' } }
##
# @MyType:
##
{ 'struct': 'MyType', 'base': 'Union', 'data': { 'c': 'int' } } { 'struct': 'MyType', 'base': 'Union', 'data': { 'c': 'int' } }
tests/qapi-schema/bad-data.json:6: 'data' for command 'oops' cannot be an array tests/qapi-schema/bad-data.json:2: 'data' for command 'oops' cannot be an array
# we ensure 'data' is a dictionary for all but enums # we ensure 'data' is a dictionary for all but enums
##
# @oops:
##
{ 'command': 'oops', 'data': [ ] } { 'command': 'oops', 'data': [ ] }
tests/qapi-schema/bad-ident.json:6: 'struct' does not allow optional name '*oops' tests/qapi-schema/bad-ident.json:2: 'struct' does not allow optional name '*oops'
# we reject creating a type name with bad name # we reject creating a type name with bad name
##
# @*oops:
##
{ 'struct': '*oops', 'data': { 'i': 'int' } } { 'struct': '*oops', 'data': { 'i': 'int' } }
tests/qapi-schema/bad-type-bool.json:6: 'struct' key must have a string value tests/qapi-schema/bad-type-bool.json:2: 'struct' key must have a string value
# we reject an expression with a metatype that is not a string # we reject an expression with a metatype that is not a string
##
# @true:
##
{ 'struct': true, 'data': { } } { 'struct': true, 'data': { } }
tests/qapi-schema/bad-type-dict.json:6: 'command' key must have a string value tests/qapi-schema/bad-type-dict.json:2: 'command' key must have a string value
# we reject an expression with a metatype that is not a string # we reject an expression with a metatype that is not a string
##
# @foo:
##
{ 'command': { } } { 'command': { } }
tests/qapi-schema/base-cycle-direct.json:6: Object Loopy contains itself tests/qapi-schema/base-cycle-direct.json:2: Object Loopy contains itself
# we reject a loop in base classes # we reject a loop in base classes
##
# @Loopy:
##
{ 'struct': 'Loopy', 'base': 'Loopy', 'data': {} } { 'struct': 'Loopy', 'base': 'Loopy', 'data': {} }
tests/qapi-schema/base-cycle-indirect.json:6: Object Base1 contains itself tests/qapi-schema/base-cycle-indirect.json:2: Object Base1 contains itself
# we reject a loop in base classes # we reject a loop in base classes
##
# @Base1:
##
{ 'struct': 'Base1', 'base': 'Base2', 'data': {} } { 'struct': 'Base1', 'base': 'Base2', 'data': {} }
##
# @Base2:
##
{ 'struct': 'Base2', 'base': 'Base1', 'data': {} } { 'struct': 'Base2', 'base': 'Base1', 'data': {} }
tests/qapi-schema/command-int.json:6: built-in 'int' is already defined tests/qapi-schema/command-int.json:2: built-in 'int' is already defined
# we reject collisions between commands and types # we reject collisions between commands and types
##
# @int:
##
{ 'command': 'int', 'data': { 'character': 'str' } } { 'command': 'int', 'data': { 'character': 'str' } }
# Unindented comment # Unindented comment
##
# @Status:
##
{ 'enum': 'Status', # Comment to the right of code { 'enum': 'Status', # Comment to the right of code
# Indented comment # Indented comment
'data': [ 'good', 'bad', 'ugly' ] } 'data': [ 'good', 'bad', 'ugly' ] }
...@@ -2,4 +2,3 @@ enum QType ['none', 'qnull', 'qint', 'qstring', 'qdict', 'qlist', 'qfloat', 'qbo ...@@ -2,4 +2,3 @@ enum QType ['none', 'qnull', 'qint', 'qstring', 'qdict', 'qlist', 'qfloat', 'qbo
prefix QTYPE prefix QTYPE
enum Status ['good', 'bad', 'ugly'] enum Status ['good', 'bad', 'ugly']
object q_empty object q_empty
doc symbol=Status expr=('enum', 'Status')
tests/qapi-schema/double-type.json:6: Unknown key 'command' in struct 'bar' tests/qapi-schema/double-type.json:2: Unknown key 'command' in struct 'bar'
# we reject an expression with ambiguous metatype # we reject an expression with ambiguous metatype
##
# @foo:
##
{ 'command': 'foo', 'struct': 'bar', 'data': { } } { 'command': 'foo', 'struct': 'bar', 'data': { } }
tests/qapi-schema/enum-bad-name.json:6: Member of enum 'MyEnum' uses invalid name 'not^possible' tests/qapi-schema/enum-bad-name.json:2: Member of enum 'MyEnum' uses invalid name 'not^possible'
# we ensure all enum names can map to C # we ensure all enum names can map to C
##
# @MyEnum:
##
{ 'enum': 'MyEnum', 'data': [ 'not^possible' ] } { 'enum': 'MyEnum', 'data': [ 'not^possible' ] }
tests/qapi-schema/enum-bad-prefix.json:6: Enum 'MyEnum' requires a string for 'prefix' tests/qapi-schema/enum-bad-prefix.json:2: Enum 'MyEnum' requires a string for 'prefix'
# The prefix must be a string type # The prefix must be a string type
##
# @MyEnum:
##
{ 'enum': 'MyEnum', 'data': [ 'one' ], 'prefix': [ 'fish' ] } { 'enum': 'MyEnum', 'data': [ 'one' ], 'prefix': [ 'fish' ] }
tests/qapi-schema/enum-clash-member.json:6: 'one_two' (member of MyEnum) collides with 'one-two' (member of MyEnum) tests/qapi-schema/enum-clash-member.json:2: 'one_two' (member of MyEnum) collides with 'one-two' (member of MyEnum)
# we reject enums where members will clash when mapped to C enum # we reject enums where members will clash when mapped to C enum
##
# @MyEnum:
##
{ 'enum': 'MyEnum', 'data': [ 'one-two', 'one_two' ] } { 'enum': 'MyEnum', 'data': [ 'one-two', 'one_two' ] }
tests/qapi-schema/enum-dict-member.json:6: Member of enum 'MyEnum' requires a string name tests/qapi-schema/enum-dict-member.json:2: Member of enum 'MyEnum' requires a string name
# we reject any enum member that is not a string # we reject any enum member that is not a string
##
# @MyEnum:
##
{ 'enum': 'MyEnum', 'data': [ { 'value': 'str' } ] } { 'enum': 'MyEnum', 'data': [ { 'value': 'str' } ] }
tests/qapi-schema/enum-member-case.json:10: 'Value' (member of NoWayThisWillGetWhitelisted) should not use uppercase tests/qapi-schema/enum-member-case.json:3: 'Value' (member of NoWayThisWillGetWhitelisted) should not use uppercase
# Member names should be 'lower-case' unless the enum is whitelisted # Member names should be 'lower-case' unless the enum is whitelisted
##
# @UuidInfo:
##
{ 'enum': 'UuidInfo', 'data': [ 'Value' ] } # UuidInfo is whitelisted { 'enum': 'UuidInfo', 'data': [ 'Value' ] } # UuidInfo is whitelisted
##
# @NoWayThisWillGetWhitelisted:
##
{ 'enum': 'NoWayThisWillGetWhitelisted', 'data': [ 'Value' ] } { 'enum': 'NoWayThisWillGetWhitelisted', 'data': [ 'Value' ] }
tests/qapi-schema/enum-missing-data.json:6: Key 'data' is missing from enum 'MyEnum' tests/qapi-schema/enum-missing-data.json:2: Key 'data' is missing from enum 'MyEnum'
# we require that all QAPI enums have a data array # we require that all QAPI enums have a data array
##
# @MyEnum:
##
{ 'enum': 'MyEnum' } { 'enum': 'MyEnum' }
tests/qapi-schema/enum-wrong-data.json:6: Enum 'MyEnum' requires an array for 'data' tests/qapi-schema/enum-wrong-data.json:2: Enum 'MyEnum' requires an array for 'data'
# we require that all qapi enums have an array for data # we require that all qapi enums have an array for data
##
# @MyEnum:
##
{ 'enum': 'MyEnum', 'data': { 'value': 'str' } } { 'enum': 'MyEnum', 'data': { 'value': 'str' } }
tests/qapi-schema/event-boxed-empty.json:6: Use of 'boxed' requires 'data' tests/qapi-schema/event-boxed-empty.json:2: Use of 'boxed' requires 'data'
# 'boxed' requires a non-empty type # 'boxed' requires a non-empty type
##
# @FOO:
##
{ 'event': 'FOO', 'boxed': true } { 'event': 'FOO', 'boxed': true }
# TODO: might be nice to enforce naming conventions; but until then this works # TODO: might be nice to enforce naming conventions; but until then this works
# even though events should usually be ALL_CAPS # even though events should usually be ALL_CAPS
##
# @oops:
##
{ 'event': 'oops' } { 'event': 'oops' }
...@@ -3,4 +3,3 @@ enum QType ['none', 'qnull', 'qint', 'qstring', 'qdict', 'qlist', 'qfloat', 'qbo ...@@ -3,4 +3,3 @@ enum QType ['none', 'qnull', 'qint', 'qstring', 'qdict', 'qlist', 'qfloat', 'qbo
event oops None event oops None
boxed=False boxed=False
object q_empty object q_empty
doc symbol=oops expr=('event', 'oops')
tests/qapi-schema/event-nest-struct.json:5: Member 'a' of 'data' for event 'EVENT_A' should be a type name tests/qapi-schema/event-nest-struct.json:1: Member 'a' of 'data' for event 'EVENT_A' should be a type name
##
# @EVENT_A:
# event-nest-struct
##
{ 'event': 'EVENT_A', { 'event': 'EVENT_A',
'data': { 'a' : { 'string' : 'str', 'integer': 'int' }, 'b' : 'str' } } 'data': { 'a' : { 'string' : 'str', 'integer': 'int' }, 'b' : 'str' } }
tests/qapi-schema/flat-union-array-branch.json:20: Member 'value1' of union 'TestUnion' cannot be an array tests/qapi-schema/flat-union-array-branch.json:8: Member 'value1' of union 'TestUnion' cannot be an array
##
# @TestEnum:
##
# we require flat union branches to be a struct # we require flat union branches to be a struct
{ 'enum': 'TestEnum', { 'enum': 'TestEnum',
'data': [ 'value1', 'value2' ] } 'data': [ 'value1', 'value2' ] }
##
# @Base:
##
{ 'struct': 'Base', { 'struct': 'Base',
'data': { 'enum1': 'TestEnum' } } 'data': { 'enum1': 'TestEnum' } }
##
# @TestTypeB:
##
{ 'struct': 'TestTypeB', { 'struct': 'TestTypeB',
'data': { 'integer': 'int' } } 'data': { 'integer': 'int' } }
##
# @TestUnion:
##
{ 'union': 'TestUnion', { 'union': 'TestUnion',
'base': 'Base', 'base': 'Base',
'discriminator': 'enum1', 'discriminator': 'enum1',
......
tests/qapi-schema/flat-union-bad-base.json:21: 'string' (member of TestTypeA) collides with 'string' (base of TestUnion) tests/qapi-schema/flat-union-bad-base.json:8: 'string' (member of TestTypeA) collides with 'string' (base of TestUnion)
# we allow anonymous base, but enforce no duplicate keys # we allow anonymous base, but enforce no duplicate keys
##
# @TestEnum:
##
{ 'enum': 'TestEnum', { 'enum': 'TestEnum',
'data': [ 'value1', 'value2' ] } 'data': [ 'value1', 'value2' ] }
##
# @TestTypeA:
##
{ 'struct': 'TestTypeA', { 'struct': 'TestTypeA',
'data': { 'string': 'str' } } 'data': { 'string': 'str' } }
##
# @TestTypeB:
##
{ 'struct': 'TestTypeB', { 'struct': 'TestTypeB',
'data': { 'integer': 'int' } } 'data': { 'integer': 'int' } }
##
# @TestUnion:
##
{ 'union': 'TestUnion', { 'union': 'TestUnion',
'base': { 'enum1': 'TestEnum', 'string': 'str' }, 'base': { 'enum1': 'TestEnum', 'string': 'str' },
'discriminator': 'enum1', 'discriminator': 'enum1',
......
tests/qapi-schema/flat-union-bad-discriminator.json:27: Discriminator of flat union 'TestUnion' requires a string name tests/qapi-schema/flat-union-bad-discriminator.json:11: Discriminator of flat union 'TestUnion' requires a string name
# we require the discriminator to be a string naming a base-type member # we require the discriminator to be a string naming a base-type member
# this tests the old syntax for anonymous unions before we added alternates # this tests the old syntax for anonymous unions before we added alternates
##
# @TestEnum:
##
{ 'enum': 'TestEnum', { 'enum': 'TestEnum',
'data': [ 'value1', 'value2' ] } 'data': [ 'value1', 'value2' ] }
##
# @TestBase:
##
{ 'struct': 'TestBase', { 'struct': 'TestBase',
'data': { 'enum1': 'TestEnum', 'kind': 'str' } } 'data': { 'enum1': 'TestEnum', 'kind': 'str' } }
##
# @TestTypeA:
##
{ 'struct': 'TestTypeA', { 'struct': 'TestTypeA',
'data': { 'string': 'str' } } 'data': { 'string': 'str' } }
##
# @TestTypeB:
##
{ 'struct': 'TestTypeB', { 'struct': 'TestTypeB',
'data': { 'integer': 'int' } } 'data': { 'integer': 'int' } }
##
# @TestUnion:
##
{ 'union': 'TestUnion', { 'union': 'TestUnion',
'base': 'TestBase', 'base': 'TestBase',
'discriminator': {}, 'discriminator': {},
......
tests/qapi-schema/flat-union-base-any.json:21: 'base' for union 'TestUnion' cannot use built-in type 'any' tests/qapi-schema/flat-union-base-any.json:8: 'base' for union 'TestUnion' cannot use built-in type 'any'
# we require the base to be an existing struct # we require the base to be an existing struct
##
# @TestEnum:
##
{ 'enum': 'TestEnum', { 'enum': 'TestEnum',
'data': [ 'value1', 'value2' ] } 'data': [ 'value1', 'value2' ] }
##
# @TestTypeA:
##
{ 'struct': 'TestTypeA', { 'struct': 'TestTypeA',
'data': { 'string': 'str' } } 'data': { 'string': 'str' } }
##
# @TestTypeB:
##
{ 'struct': 'TestTypeB', { 'struct': 'TestTypeB',
'data': { 'integer': 'int' } } 'data': { 'integer': 'int' } }
##
# @TestUnion:
##
{ 'union': 'TestUnion', { 'union': 'TestUnion',
'base': 'any', 'base': 'any',
'discriminator': 'enum1', 'discriminator': 'enum1',
......
tests/qapi-schema/flat-union-base-union.json:30: 'base' for union 'TestUnion' cannot use union type 'UnionBase' tests/qapi-schema/flat-union-base-union.json:14: 'base' for union 'TestUnion' cannot use union type 'UnionBase'
...@@ -2,31 +2,15 @@ ...@@ -2,31 +2,15 @@
# TODO: It would be possible to allow a union as a base, as long as all # TODO: It would be possible to allow a union as a base, as long as all
# permutations of QMP names exposed by base do not clash with any QMP # permutations of QMP names exposed by base do not clash with any QMP
# member names added by local variants. # member names added by local variants.
##
# @TestEnum:
##
{ 'enum': 'TestEnum', { 'enum': 'TestEnum',
'data': [ 'value1', 'value2' ] } 'data': [ 'value1', 'value2' ] }
##
# @TestTypeA:
##
{ 'struct': 'TestTypeA', { 'struct': 'TestTypeA',
'data': { 'string': 'str' } } 'data': { 'string': 'str' } }
##
# @TestTypeB:
##
{ 'struct': 'TestTypeB', { 'struct': 'TestTypeB',
'data': { 'integer': 'int' } } 'data': { 'integer': 'int' } }
##
# @UnionBase:
##
{ 'union': 'UnionBase', { 'union': 'UnionBase',
'data': { 'kind1': 'TestTypeA', 'data': { 'kind1': 'TestTypeA',
'kind2': 'TestTypeB' } } 'kind2': 'TestTypeB' } }
##
# @TestUnion:
##
{ 'union': 'TestUnion', { 'union': 'TestUnion',
'base': 'UnionBase', 'base': 'UnionBase',
'discriminator': 'type', 'discriminator': 'type',
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册