We want to eventually allow qapi defaults, by making: 'data':{'*flag':'bool'} as shorthand for something like: 'data':{'flag':{'type':'bool', 'optional':true}} so that the default can be specified: 'data':{'flag':{'type':'bool', 'optional':true, 'default':true}}
This series does not quite get us there, but it DOES do a number of other things. It gets rid of the three uses of nested inline structs, changes anonymous unions to use a specific 'alternate' metatype rather than abusing 'union', changes the ambiguous 'type' to the obvious 'struct', and fixes lots of other parser bugs found while designing the testsuite. The testsuite changes make the bulk of this series, with a repeating pattern of writing tests that expose weaknesses in the old parser, then beefing up the generator to catch the problem during the initial parse rather than choking with an obscure python message or even causing a C compilation failure. There are a couple of ideas for things to still fix before all is said and done (such as preventing a collision of members between a struct and its base class, or fixing the parser to understand \uXXXX escape sequences in strings), but at this point, anything raised as a review comment is probably better addressed as followup patches rather than respinning a v7. v5 was here: https://lists.gnu.org/archive/html/qemu-devel/2015-03/msg05034.html v6 changes are noted in each patch; in particular, several new patches were added (additional tests, split some patches, conversion to 'struct' instead of 'type'). But most of the changes were in direct response to review comments or rebase fallout, so I kept in Reviewed-by markings where possible, to help focus review on the remainder. I wrote another patch while working on this series, but it was independent enough that I posted it separately (although I based the documentation in this patch as if that, or Markus' alternative, had been applied): https://lists.gnu.org/archive/html/qemu-devel/2015-04/msg00373.html Eric Blake (35): qapi: Add copyright declaration on docs qapi: Document type-safety considerations qapi: Simplify builtin type handling qapi: Fix generation of 'size' builtin type qapi: Require ASCII in schema qapi: Add some enum tests qapi: Better error messages for bad enums qapi: Add some union tests qapi: Clean up test coverage of simple unions qapi: Forbid base without discriminator in unions qapi: Tighten checking of unions qapi: Prepare for catching more semantic parse errors qapi: Segregate anonymous unions into alternates in generator qapi: Rename anonymous union type in test qapi: Document new 'alternate' meta-type qapi: Use 'alternate' to replace anonymous union qapi: Add some expr tests qapi: Better error messages for bad expressions qapi: Add tests of redefined expressions qapi: Better error messages for duplicated expressions qapi: Unify type bypass and add tests qapi: Add some type check tests qapi: More rigourous checking of types qapi: Require valid names qapi: Whitelist commands that don't return dictionary qapi: More rigorous checking for type safety bypass qapi: Prefer 'struct' over 'type' in generator qapi: Document 'struct' metatype qapi: Use 'struct' instead of 'type' in schema qapi: Merge UserDefTwo and UserDefNested in tests qapi: Drop tests for inline nested structs qapi: Drop inline nested struct in query-version qapi: Drop inline nested structs in query-pci qapi: Drop support for inline nested types qapi: Tweak doc references to QMP when QGA is also meant Fam Zheng (1): qapi: Allow true, false and null in schema json docs/qapi-code-gen.txt | 479 ++++++++++++++++----- docs/qmp/qmp-spec.txt | 120 ++++-- hmp.c | 28 +- hw/pci/pci.c | 42 +- qapi-schema.json | 270 +++++++----- qapi/block-core.json | 68 ++- qapi/block.json | 2 +- qapi/common.json | 30 +- qapi/trace.json | 2 +- qga/qapi-schema.json | 36 +- qmp.c | 9 +- scripts/qapi-commands.py | 8 +- scripts/qapi-event.py | 4 +- scripts/qapi-types.py | 77 ++-- scripts/qapi-visit.py | 83 ++-- scripts/qapi.py | 479 +++++++++++++++++---- tests/Makefile | 35 +- tests/qapi-schema/alternate-array.err | 1 + tests/qapi-schema/alternate-array.exit | 1 + tests/qapi-schema/alternate-array.json | 7 + tests/qapi-schema/alternate-array.out | 0 tests/qapi-schema/alternate-base.err | 1 + tests/qapi-schema/alternate-base.exit | 1 + tests/qapi-schema/alternate-base.json | 6 + tests/qapi-schema/alternate-base.out | 0 tests/qapi-schema/alternate-clash.err | 1 + tests/qapi-schema/alternate-clash.exit | 1 + tests/qapi-schema/alternate-clash.json | 3 + tests/qapi-schema/alternate-clash.out | 0 tests/qapi-schema/alternate-conflict-dict.err | 1 + tests/qapi-schema/alternate-conflict-dict.exit | 1 + tests/qapi-schema/alternate-conflict-dict.json | 8 + tests/qapi-schema/alternate-conflict-dict.out | 0 tests/qapi-schema/alternate-conflict-string.err | 1 + tests/qapi-schema/alternate-conflict-string.exit | 1 + tests/qapi-schema/alternate-conflict-string.json | 6 + tests/qapi-schema/alternate-conflict-string.out | 0 tests/qapi-schema/alternate-good.err | 0 tests/qapi-schema/alternate-good.exit | 1 + tests/qapi-schema/alternate-good.json | 9 + tests/qapi-schema/alternate-good.out | 6 + tests/qapi-schema/alternate-nested.err | 1 + tests/qapi-schema/alternate-nested.exit | 1 + tests/qapi-schema/alternate-nested.json | 5 + tests/qapi-schema/alternate-nested.out | 0 tests/qapi-schema/alternate-unknown.err | 1 + tests/qapi-schema/alternate-unknown.exit | 1 + tests/qapi-schema/alternate-unknown.json | 3 + tests/qapi-schema/alternate-unknown.out | 0 tests/qapi-schema/bad-base.err | 1 + tests/qapi-schema/bad-base.exit | 1 + tests/qapi-schema/bad-base.json | 3 + tests/qapi-schema/bad-base.out | 0 tests/qapi-schema/bad-data.err | 1 + tests/qapi-schema/bad-data.exit | 1 + tests/qapi-schema/bad-data.json | 2 + tests/qapi-schema/bad-data.out | 0 tests/qapi-schema/bad-ident.err | 1 + tests/qapi-schema/bad-ident.exit | 1 + tests/qapi-schema/bad-ident.json | 2 + tests/qapi-schema/bad-ident.out | 0 tests/qapi-schema/bad-type-bool.err | 1 + tests/qapi-schema/bad-type-bool.exit | 1 + tests/qapi-schema/bad-type-bool.json | 2 + tests/qapi-schema/bad-type-bool.out | 0 tests/qapi-schema/bad-type-dict.err | 1 + tests/qapi-schema/bad-type-dict.exit | 1 + tests/qapi-schema/bad-type-dict.json | 2 + tests/qapi-schema/bad-type-dict.out | 0 tests/qapi-schema/bad-type-int.err | 1 + tests/qapi-schema/bad-type-int.exit | 1 + tests/qapi-schema/bad-type-int.json | 3 + tests/qapi-schema/bad-type-int.out | 0 tests/qapi-schema/command-int.err | 1 + tests/qapi-schema/command-int.exit | 1 + tests/qapi-schema/command-int.json | 3 + tests/qapi-schema/command-int.out | 0 tests/qapi-schema/data-array-empty.err | 1 + tests/qapi-schema/data-array-empty.exit | 1 + tests/qapi-schema/data-array-empty.json | 2 + tests/qapi-schema/data-array-empty.out | 0 tests/qapi-schema/data-array-unknown.err | 1 + tests/qapi-schema/data-array-unknown.exit | 1 + tests/qapi-schema/data-array-unknown.json | 2 + tests/qapi-schema/data-array-unknown.out | 0 tests/qapi-schema/data-int.err | 1 + tests/qapi-schema/data-int.exit | 1 + tests/qapi-schema/data-int.json | 2 + tests/qapi-schema/data-int.out | 0 tests/qapi-schema/data-member-array-bad.err | 1 + tests/qapi-schema/data-member-array-bad.exit | 1 + tests/qapi-schema/data-member-array-bad.json | 2 + tests/qapi-schema/data-member-array-bad.out | 0 tests/qapi-schema/data-member-array.err | 0 tests/qapi-schema/data-member-array.exit | 1 + tests/qapi-schema/data-member-array.json | 4 + tests/qapi-schema/data-member-array.out | 5 + tests/qapi-schema/data-member-unknown.err | 1 + tests/qapi-schema/data-member-unknown.exit | 1 + tests/qapi-schema/data-member-unknown.json | 2 + tests/qapi-schema/data-member-unknown.out | 0 tests/qapi-schema/data-unknown.err | 1 + tests/qapi-schema/data-unknown.exit | 1 + tests/qapi-schema/data-unknown.json | 2 + tests/qapi-schema/data-unknown.out | 0 tests/qapi-schema/double-data.err | 1 + tests/qapi-schema/double-data.exit | 1 + tests/qapi-schema/double-data.json | 2 + tests/qapi-schema/double-data.out | 0 tests/qapi-schema/double-type.err | 1 + tests/qapi-schema/double-type.exit | 1 + tests/qapi-schema/double-type.json | 2 + tests/qapi-schema/double-type.out | 0 tests/qapi-schema/enum-bad-name.err | 1 + tests/qapi-schema/enum-bad-name.exit | 1 + tests/qapi-schema/enum-bad-name.json | 2 + tests/qapi-schema/enum-bad-name.out | 0 tests/qapi-schema/enum-clash-member.err | 1 + tests/qapi-schema/enum-clash-member.exit | 1 + tests/qapi-schema/enum-clash-member.json | 2 + tests/qapi-schema/enum-clash-member.out | 0 tests/qapi-schema/enum-dict-member.err | 1 + tests/qapi-schema/enum-dict-member.exit | 1 + tests/qapi-schema/enum-dict-member.json | 2 + tests/qapi-schema/enum-dict-member.out | 0 tests/qapi-schema/enum-empty.err | 0 tests/qapi-schema/enum-empty.exit | 1 + tests/qapi-schema/enum-empty.json | 2 + tests/qapi-schema/enum-empty.out | 3 + tests/qapi-schema/enum-int-member.err | 1 + tests/qapi-schema/enum-int-member.exit | 1 + tests/qapi-schema/enum-int-member.json | 3 + tests/qapi-schema/enum-int-member.out | 0 tests/qapi-schema/enum-max-member.err | 1 + tests/qapi-schema/enum-max-member.exit | 1 + tests/qapi-schema/enum-max-member.json | 3 + tests/qapi-schema/enum-max-member.out | 0 tests/qapi-schema/enum-missing-data.err | 1 + tests/qapi-schema/enum-missing-data.exit | 1 + tests/qapi-schema/enum-missing-data.json | 2 + tests/qapi-schema/enum-missing-data.out | 0 tests/qapi-schema/enum-union-clash.err | 1 + tests/qapi-schema/enum-union-clash.exit | 1 + tests/qapi-schema/enum-union-clash.json | 4 + tests/qapi-schema/enum-union-clash.out | 0 tests/qapi-schema/enum-wrong-data.err | 1 + tests/qapi-schema/enum-wrong-data.exit | 1 + tests/qapi-schema/enum-wrong-data.json | 2 + tests/qapi-schema/enum-wrong-data.out | 0 tests/qapi-schema/event-case.err | 0 tests/qapi-schema/event-case.exit | 1 + tests/qapi-schema/event-case.json | 3 + tests/qapi-schema/event-case.out | 3 + tests/qapi-schema/event-max.err | 1 + tests/qapi-schema/event-max.exit | 1 + tests/qapi-schema/event-max.json | 2 + tests/qapi-schema/event-max.out | 0 tests/qapi-schema/event-nest-struct.err | 2 +- tests/qapi-schema/flat-union-bad-base.err | 1 + tests/qapi-schema/flat-union-bad-base.exit | 1 + tests/qapi-schema/flat-union-bad-base.json | 13 + tests/qapi-schema/flat-union-bad-base.out | 0 tests/qapi-schema/flat-union-bad-discriminator.err | 1 + .../qapi-schema/flat-union-bad-discriminator.exit | 1 + .../qapi-schema/flat-union-bad-discriminator.json | 15 + tests/qapi-schema/flat-union-bad-discriminator.out | 0 tests/qapi-schema/flat-union-base-star.err | 1 + tests/qapi-schema/flat-union-base-star.exit | 1 + tests/qapi-schema/flat-union-base-star.json | 12 + tests/qapi-schema/flat-union-base-star.out | 0 tests/qapi-schema/flat-union-base-union.err | 1 + tests/qapi-schema/flat-union-base-union.exit | 1 + tests/qapi-schema/flat-union-base-union.json | 15 + tests/qapi-schema/flat-union-base-union.out | 0 tests/qapi-schema/flat-union-branch-clash.err | 0 tests/qapi-schema/flat-union-branch-clash.exit | 1 + tests/qapi-schema/flat-union-branch-clash.json | 14 + tests/qapi-schema/flat-union-branch-clash.out | 9 + tests/qapi-schema/flat-union-inline.err | 1 + tests/qapi-schema/flat-union-inline.exit | 1 + tests/qapi-schema/flat-union-inline.json | 11 + tests/qapi-schema/flat-union-inline.out | 0 tests/qapi-schema/flat-union-int-branch.err | 1 + tests/qapi-schema/flat-union-int-branch.exit | 1 + tests/qapi-schema/flat-union-int-branch.json | 12 + tests/qapi-schema/flat-union-int-branch.out | 0 .../qapi-schema/flat-union-invalid-branch-key.json | 6 +- .../flat-union-invalid-discriminator.err | 2 +- .../flat-union-invalid-discriminator.json | 6 +- tests/qapi-schema/flat-union-no-base.err | 2 +- tests/qapi-schema/flat-union-no-base.json | 12 +- .../flat-union-optional-discriminator.err | 1 + .../flat-union-optional-discriminator.exit | 1 + .../flat-union-optional-discriminator.json | 10 + .../flat-union-optional-discriminator.out | 0 tests/qapi-schema/flat-union-reverse-define.json | 6 +- tests/qapi-schema/flat-union-reverse-define.out | 12 +- .../flat-union-string-discriminator.json | 6 +- tests/qapi-schema/ident-with-escape.err | 1 + tests/qapi-schema/ident-with-escape.exit | 1 + tests/qapi-schema/ident-with-escape.json | 4 + tests/qapi-schema/ident-with-escape.out | 0 tests/qapi-schema/indented-expr.json | 4 +- tests/qapi-schema/indented-expr.out | 2 +- tests/qapi-schema/missing-type.err | 1 + tests/qapi-schema/missing-type.exit | 1 + tests/qapi-schema/missing-type.json | 2 + tests/qapi-schema/missing-type.out | 0 tests/qapi-schema/nested-struct-data.err | 1 + tests/qapi-schema/nested-struct-data.exit | 1 + tests/qapi-schema/nested-struct-data.json | 4 + tests/qapi-schema/nested-struct-data.out | 0 tests/qapi-schema/nested-struct-returns.err | 1 + tests/qapi-schema/nested-struct-returns.exit | 1 + tests/qapi-schema/nested-struct-returns.json | 3 + tests/qapi-schema/nested-struct-returns.out | 0 tests/qapi-schema/qapi-schema-test.json | 46 +- tests/qapi-schema/qapi-schema-test.out | 54 +-- tests/qapi-schema/redefined-builtin.err | 1 + tests/qapi-schema/redefined-builtin.exit | 1 + tests/qapi-schema/redefined-builtin.json | 2 + tests/qapi-schema/redefined-builtin.out | 0 tests/qapi-schema/redefined-command.err | 1 + tests/qapi-schema/redefined-command.exit | 1 + tests/qapi-schema/redefined-command.json | 3 + tests/qapi-schema/redefined-command.out | 0 tests/qapi-schema/redefined-event.err | 1 + tests/qapi-schema/redefined-event.exit | 1 + tests/qapi-schema/redefined-event.json | 3 + tests/qapi-schema/redefined-event.out | 0 tests/qapi-schema/redefined-type.err | 1 + tests/qapi-schema/redefined-type.exit | 1 + tests/qapi-schema/redefined-type.json | 3 + tests/qapi-schema/redefined-type.out | 0 tests/qapi-schema/returns-alternate.err | 1 + tests/qapi-schema/returns-alternate.exit | 1 + tests/qapi-schema/returns-alternate.json | 3 + tests/qapi-schema/returns-alternate.out | 0 tests/qapi-schema/returns-array-bad.err | 1 + tests/qapi-schema/returns-array-bad.exit | 1 + tests/qapi-schema/returns-array-bad.json | 2 + tests/qapi-schema/returns-array-bad.out | 0 tests/qapi-schema/returns-int.err | 0 tests/qapi-schema/returns-int.exit | 1 + tests/qapi-schema/returns-int.json | 3 + tests/qapi-schema/returns-int.out | 3 + tests/qapi-schema/returns-unknown.err | 1 + tests/qapi-schema/returns-unknown.exit | 1 + tests/qapi-schema/returns-unknown.json | 2 + tests/qapi-schema/returns-unknown.out | 0 tests/qapi-schema/returns-whitelist.err | 1 + tests/qapi-schema/returns-whitelist.exit | 1 + tests/qapi-schema/returns-whitelist.json | 11 + tests/qapi-schema/returns-whitelist.out | 0 tests/qapi-schema/type-bypass-bad-gen.err | 1 + tests/qapi-schema/type-bypass-bad-gen.exit | 1 + tests/qapi-schema/type-bypass-bad-gen.json | 2 + tests/qapi-schema/type-bypass-bad-gen.out | 0 tests/qapi-schema/type-bypass-no-gen.err | 1 + tests/qapi-schema/type-bypass-no-gen.exit | 1 + tests/qapi-schema/type-bypass-no-gen.json | 2 + tests/qapi-schema/type-bypass-no-gen.out | 0 tests/qapi-schema/type-bypass.err | 0 tests/qapi-schema/type-bypass.exit | 1 + tests/qapi-schema/type-bypass.json | 2 + tests/qapi-schema/type-bypass.out | 3 + tests/qapi-schema/union-bad-branch.err | 1 + tests/qapi-schema/union-bad-branch.exit | 1 + tests/qapi-schema/union-bad-branch.json | 8 + tests/qapi-schema/union-bad-branch.out | 0 tests/qapi-schema/union-base-no-discriminator.err | 1 + tests/qapi-schema/union-base-no-discriminator.exit | 1 + tests/qapi-schema/union-base-no-discriminator.json | 14 + tests/qapi-schema/union-base-no-discriminator.out | 0 tests/qapi-schema/union-invalid-base.err | 2 +- tests/qapi-schema/union-invalid-base.json | 8 +- tests/qapi-schema/union-max.err | 1 + tests/qapi-schema/union-max.exit | 1 + tests/qapi-schema/union-max.json | 3 + tests/qapi-schema/union-max.out | 0 tests/qapi-schema/union-optional-branch.err | 1 + tests/qapi-schema/union-optional-branch.exit | 1 + tests/qapi-schema/union-optional-branch.json | 2 + tests/qapi-schema/union-optional-branch.out | 0 tests/qapi-schema/union-unknown.err | 1 + tests/qapi-schema/union-unknown.exit | 1 + tests/qapi-schema/union-unknown.json | 3 + tests/qapi-schema/union-unknown.out | 0 tests/qapi-schema/unknown-expr-key.err | 1 + tests/qapi-schema/unknown-expr-key.exit | 1 + tests/qapi-schema/unknown-expr-key.json | 2 + tests/qapi-schema/unknown-expr-key.out | 0 tests/test-qmp-commands.c | 37 +- tests/test-qmp-input-strict.c | 98 +++-- tests/test-qmp-input-visitor.c | 117 +++-- tests/test-qmp-output-visitor.c | 152 +++---- tests/test-visitor-serialization.c | 88 ++-- 297 files changed, 2003 insertions(+), 882 deletions(-) create mode 100644 tests/qapi-schema/alternate-array.err create mode 100644 tests/qapi-schema/alternate-array.exit create mode 100644 tests/qapi-schema/alternate-array.json create mode 100644 tests/qapi-schema/alternate-array.out create mode 100644 tests/qapi-schema/alternate-base.err create mode 100644 tests/qapi-schema/alternate-base.exit create mode 100644 tests/qapi-schema/alternate-base.json create mode 100644 tests/qapi-schema/alternate-base.out create mode 100644 tests/qapi-schema/alternate-clash.err create mode 100644 tests/qapi-schema/alternate-clash.exit create mode 100644 tests/qapi-schema/alternate-clash.json create mode 100644 tests/qapi-schema/alternate-clash.out create mode 100644 tests/qapi-schema/alternate-conflict-dict.err create mode 100644 tests/qapi-schema/alternate-conflict-dict.exit create mode 100644 tests/qapi-schema/alternate-conflict-dict.json create mode 100644 tests/qapi-schema/alternate-conflict-dict.out create mode 100644 tests/qapi-schema/alternate-conflict-string.err create mode 100644 tests/qapi-schema/alternate-conflict-string.exit create mode 100644 tests/qapi-schema/alternate-conflict-string.json create mode 100644 tests/qapi-schema/alternate-conflict-string.out create mode 100644 tests/qapi-schema/alternate-good.err create mode 100644 tests/qapi-schema/alternate-good.exit create mode 100644 tests/qapi-schema/alternate-good.json create mode 100644 tests/qapi-schema/alternate-good.out create mode 100644 tests/qapi-schema/alternate-nested.err create mode 100644 tests/qapi-schema/alternate-nested.exit create mode 100644 tests/qapi-schema/alternate-nested.json create mode 100644 tests/qapi-schema/alternate-nested.out create mode 100644 tests/qapi-schema/alternate-unknown.err create mode 100644 tests/qapi-schema/alternate-unknown.exit create mode 100644 tests/qapi-schema/alternate-unknown.json create mode 100644 tests/qapi-schema/alternate-unknown.out create mode 100644 tests/qapi-schema/bad-base.err create mode 100644 tests/qapi-schema/bad-base.exit create mode 100644 tests/qapi-schema/bad-base.json create mode 100644 tests/qapi-schema/bad-base.out create mode 100644 tests/qapi-schema/bad-data.err create mode 100644 tests/qapi-schema/bad-data.exit create mode 100644 tests/qapi-schema/bad-data.json create mode 100644 tests/qapi-schema/bad-data.out create mode 100644 tests/qapi-schema/bad-ident.err create mode 100644 tests/qapi-schema/bad-ident.exit create mode 100644 tests/qapi-schema/bad-ident.json create mode 100644 tests/qapi-schema/bad-ident.out create mode 100644 tests/qapi-schema/bad-type-bool.err create mode 100644 tests/qapi-schema/bad-type-bool.exit create mode 100644 tests/qapi-schema/bad-type-bool.json create mode 100644 tests/qapi-schema/bad-type-bool.out create mode 100644 tests/qapi-schema/bad-type-dict.err create mode 100644 tests/qapi-schema/bad-type-dict.exit create mode 100644 tests/qapi-schema/bad-type-dict.json create mode 100644 tests/qapi-schema/bad-type-dict.out create mode 100644 tests/qapi-schema/bad-type-int.err create mode 100644 tests/qapi-schema/bad-type-int.exit create mode 100644 tests/qapi-schema/bad-type-int.json create mode 100644 tests/qapi-schema/bad-type-int.out create mode 100644 tests/qapi-schema/command-int.err create mode 100644 tests/qapi-schema/command-int.exit create mode 100644 tests/qapi-schema/command-int.json create mode 100644 tests/qapi-schema/command-int.out create mode 100644 tests/qapi-schema/data-array-empty.err create mode 100644 tests/qapi-schema/data-array-empty.exit create mode 100644 tests/qapi-schema/data-array-empty.json create mode 100644 tests/qapi-schema/data-array-empty.out create mode 100644 tests/qapi-schema/data-array-unknown.err create mode 100644 tests/qapi-schema/data-array-unknown.exit create mode 100644 tests/qapi-schema/data-array-unknown.json create mode 100644 tests/qapi-schema/data-array-unknown.out create mode 100644 tests/qapi-schema/data-int.err create mode 100644 tests/qapi-schema/data-int.exit create mode 100644 tests/qapi-schema/data-int.json create mode 100644 tests/qapi-schema/data-int.out create mode 100644 tests/qapi-schema/data-member-array-bad.err create mode 100644 tests/qapi-schema/data-member-array-bad.exit create mode 100644 tests/qapi-schema/data-member-array-bad.json create mode 100644 tests/qapi-schema/data-member-array-bad.out create mode 100644 tests/qapi-schema/data-member-array.err create mode 100644 tests/qapi-schema/data-member-array.exit create mode 100644 tests/qapi-schema/data-member-array.json create mode 100644 tests/qapi-schema/data-member-array.out create mode 100644 tests/qapi-schema/data-member-unknown.err create mode 100644 tests/qapi-schema/data-member-unknown.exit create mode 100644 tests/qapi-schema/data-member-unknown.json create mode 100644 tests/qapi-schema/data-member-unknown.out create mode 100644 tests/qapi-schema/data-unknown.err create mode 100644 tests/qapi-schema/data-unknown.exit create mode 100644 tests/qapi-schema/data-unknown.json create mode 100644 tests/qapi-schema/data-unknown.out create mode 100644 tests/qapi-schema/double-data.err create mode 100644 tests/qapi-schema/double-data.exit create mode 100644 tests/qapi-schema/double-data.json create mode 100644 tests/qapi-schema/double-data.out create mode 100644 tests/qapi-schema/double-type.err create mode 100644 tests/qapi-schema/double-type.exit create mode 100644 tests/qapi-schema/double-type.json create mode 100644 tests/qapi-schema/double-type.out create mode 100644 tests/qapi-schema/enum-bad-name.err create mode 100644 tests/qapi-schema/enum-bad-name.exit create mode 100644 tests/qapi-schema/enum-bad-name.json create mode 100644 tests/qapi-schema/enum-bad-name.out create mode 100644 tests/qapi-schema/enum-clash-member.err create mode 100644 tests/qapi-schema/enum-clash-member.exit create mode 100644 tests/qapi-schema/enum-clash-member.json create mode 100644 tests/qapi-schema/enum-clash-member.out create mode 100644 tests/qapi-schema/enum-dict-member.err create mode 100644 tests/qapi-schema/enum-dict-member.exit create mode 100644 tests/qapi-schema/enum-dict-member.json create mode 100644 tests/qapi-schema/enum-dict-member.out create mode 100644 tests/qapi-schema/enum-empty.err create mode 100644 tests/qapi-schema/enum-empty.exit create mode 100644 tests/qapi-schema/enum-empty.json create mode 100644 tests/qapi-schema/enum-empty.out create mode 100644 tests/qapi-schema/enum-int-member.err create mode 100644 tests/qapi-schema/enum-int-member.exit create mode 100644 tests/qapi-schema/enum-int-member.json create mode 100644 tests/qapi-schema/enum-int-member.out create mode 100644 tests/qapi-schema/enum-max-member.err create mode 100644 tests/qapi-schema/enum-max-member.exit create mode 100644 tests/qapi-schema/enum-max-member.json create mode 100644 tests/qapi-schema/enum-max-member.out create mode 100644 tests/qapi-schema/enum-missing-data.err create mode 100644 tests/qapi-schema/enum-missing-data.exit create mode 100644 tests/qapi-schema/enum-missing-data.json create mode 100644 tests/qapi-schema/enum-missing-data.out create mode 100644 tests/qapi-schema/enum-union-clash.err create mode 100644 tests/qapi-schema/enum-union-clash.exit create mode 100644 tests/qapi-schema/enum-union-clash.json create mode 100644 tests/qapi-schema/enum-union-clash.out create mode 100644 tests/qapi-schema/enum-wrong-data.err create mode 100644 tests/qapi-schema/enum-wrong-data.exit create mode 100644 tests/qapi-schema/enum-wrong-data.json create mode 100644 tests/qapi-schema/enum-wrong-data.out create mode 100644 tests/qapi-schema/event-case.err create mode 100644 tests/qapi-schema/event-case.exit create mode 100644 tests/qapi-schema/event-case.json create mode 100644 tests/qapi-schema/event-case.out create mode 100644 tests/qapi-schema/event-max.err create mode 100644 tests/qapi-schema/event-max.exit create mode 100644 tests/qapi-schema/event-max.json create mode 100644 tests/qapi-schema/event-max.out create mode 100644 tests/qapi-schema/flat-union-bad-base.err create mode 100644 tests/qapi-schema/flat-union-bad-base.exit create mode 100644 tests/qapi-schema/flat-union-bad-base.json create mode 100644 tests/qapi-schema/flat-union-bad-base.out create mode 100644 tests/qapi-schema/flat-union-bad-discriminator.err create mode 100644 tests/qapi-schema/flat-union-bad-discriminator.exit create mode 100644 tests/qapi-schema/flat-union-bad-discriminator.json create mode 100644 tests/qapi-schema/flat-union-bad-discriminator.out create mode 100644 tests/qapi-schema/flat-union-base-star.err create mode 100644 tests/qapi-schema/flat-union-base-star.exit create mode 100644 tests/qapi-schema/flat-union-base-star.json create mode 100644 tests/qapi-schema/flat-union-base-star.out create mode 100644 tests/qapi-schema/flat-union-base-union.err create mode 100644 tests/qapi-schema/flat-union-base-union.exit create mode 100644 tests/qapi-schema/flat-union-base-union.json create mode 100644 tests/qapi-schema/flat-union-base-union.out create mode 100644 tests/qapi-schema/flat-union-branch-clash.err create mode 100644 tests/qapi-schema/flat-union-branch-clash.exit create mode 100644 tests/qapi-schema/flat-union-branch-clash.json create mode 100644 tests/qapi-schema/flat-union-branch-clash.out create mode 100644 tests/qapi-schema/flat-union-inline.err create mode 100644 tests/qapi-schema/flat-union-inline.exit create mode 100644 tests/qapi-schema/flat-union-inline.json create mode 100644 tests/qapi-schema/flat-union-inline.out create mode 100644 tests/qapi-schema/flat-union-int-branch.err create mode 100644 tests/qapi-schema/flat-union-int-branch.exit create mode 100644 tests/qapi-schema/flat-union-int-branch.json create mode 100644 tests/qapi-schema/flat-union-int-branch.out create mode 100644 tests/qapi-schema/flat-union-optional-discriminator.err create mode 100644 tests/qapi-schema/flat-union-optional-discriminator.exit create mode 100644 tests/qapi-schema/flat-union-optional-discriminator.json create mode 100644 tests/qapi-schema/flat-union-optional-discriminator.out create mode 100644 tests/qapi-schema/ident-with-escape.err create mode 100644 tests/qapi-schema/ident-with-escape.exit create mode 100644 tests/qapi-schema/ident-with-escape.json create mode 100644 tests/qapi-schema/ident-with-escape.out create mode 100644 tests/qapi-schema/missing-type.err create mode 100644 tests/qapi-schema/missing-type.exit create mode 100644 tests/qapi-schema/missing-type.json create mode 100644 tests/qapi-schema/missing-type.out create mode 100644 tests/qapi-schema/nested-struct-data.err create mode 100644 tests/qapi-schema/nested-struct-data.exit create mode 100644 tests/qapi-schema/nested-struct-data.json create mode 100644 tests/qapi-schema/nested-struct-data.out create mode 100644 tests/qapi-schema/nested-struct-returns.err create mode 100644 tests/qapi-schema/nested-struct-returns.exit create mode 100644 tests/qapi-schema/nested-struct-returns.json create mode 100644 tests/qapi-schema/nested-struct-returns.out create mode 100644 tests/qapi-schema/redefined-builtin.err create mode 100644 tests/qapi-schema/redefined-builtin.exit create mode 100644 tests/qapi-schema/redefined-builtin.json create mode 100644 tests/qapi-schema/redefined-builtin.out create mode 100644 tests/qapi-schema/redefined-command.err create mode 100644 tests/qapi-schema/redefined-command.exit create mode 100644 tests/qapi-schema/redefined-command.json create mode 100644 tests/qapi-schema/redefined-command.out create mode 100644 tests/qapi-schema/redefined-event.err create mode 100644 tests/qapi-schema/redefined-event.exit create mode 100644 tests/qapi-schema/redefined-event.json create mode 100644 tests/qapi-schema/redefined-event.out create mode 100644 tests/qapi-schema/redefined-type.err create mode 100644 tests/qapi-schema/redefined-type.exit create mode 100644 tests/qapi-schema/redefined-type.json create mode 100644 tests/qapi-schema/redefined-type.out create mode 100644 tests/qapi-schema/returns-alternate.err create mode 100644 tests/qapi-schema/returns-alternate.exit create mode 100644 tests/qapi-schema/returns-alternate.json create mode 100644 tests/qapi-schema/returns-alternate.out create mode 100644 tests/qapi-schema/returns-array-bad.err create mode 100644 tests/qapi-schema/returns-array-bad.exit create mode 100644 tests/qapi-schema/returns-array-bad.json create mode 100644 tests/qapi-schema/returns-array-bad.out create mode 100644 tests/qapi-schema/returns-int.err create mode 100644 tests/qapi-schema/returns-int.exit create mode 100644 tests/qapi-schema/returns-int.json create mode 100644 tests/qapi-schema/returns-int.out create mode 100644 tests/qapi-schema/returns-unknown.err create mode 100644 tests/qapi-schema/returns-unknown.exit create mode 100644 tests/qapi-schema/returns-unknown.json create mode 100644 tests/qapi-schema/returns-unknown.out create mode 100644 tests/qapi-schema/returns-whitelist.err create mode 100644 tests/qapi-schema/returns-whitelist.exit create mode 100644 tests/qapi-schema/returns-whitelist.json create mode 100644 tests/qapi-schema/returns-whitelist.out create mode 100644 tests/qapi-schema/type-bypass-bad-gen.err create mode 100644 tests/qapi-schema/type-bypass-bad-gen.exit create mode 100644 tests/qapi-schema/type-bypass-bad-gen.json create mode 100644 tests/qapi-schema/type-bypass-bad-gen.out create mode 100644 tests/qapi-schema/type-bypass-no-gen.err create mode 100644 tests/qapi-schema/type-bypass-no-gen.exit create mode 100644 tests/qapi-schema/type-bypass-no-gen.json create mode 100644 tests/qapi-schema/type-bypass-no-gen.out create mode 100644 tests/qapi-schema/type-bypass.err create mode 100644 tests/qapi-schema/type-bypass.exit create mode 100644 tests/qapi-schema/type-bypass.json create mode 100644 tests/qapi-schema/type-bypass.out create mode 100644 tests/qapi-schema/union-bad-branch.err create mode 100644 tests/qapi-schema/union-bad-branch.exit create mode 100644 tests/qapi-schema/union-bad-branch.json create mode 100644 tests/qapi-schema/union-bad-branch.out create mode 100644 tests/qapi-schema/union-base-no-discriminator.err create mode 100644 tests/qapi-schema/union-base-no-discriminator.exit create mode 100644 tests/qapi-schema/union-base-no-discriminator.json create mode 100644 tests/qapi-schema/union-base-no-discriminator.out create mode 100644 tests/qapi-schema/union-max.err create mode 100644 tests/qapi-schema/union-max.exit create mode 100644 tests/qapi-schema/union-max.json create mode 100644 tests/qapi-schema/union-max.out create mode 100644 tests/qapi-schema/union-optional-branch.err create mode 100644 tests/qapi-schema/union-optional-branch.exit create mode 100644 tests/qapi-schema/union-optional-branch.json create mode 100644 tests/qapi-schema/union-optional-branch.out create mode 100644 tests/qapi-schema/union-unknown.err create mode 100644 tests/qapi-schema/union-unknown.exit create mode 100644 tests/qapi-schema/union-unknown.json create mode 100644 tests/qapi-schema/union-unknown.out create mode 100644 tests/qapi-schema/unknown-expr-key.err create mode 100644 tests/qapi-schema/unknown-expr-key.exit create mode 100644 tests/qapi-schema/unknown-expr-key.json create mode 100644 tests/qapi-schema/unknown-expr-key.out -- 2.1.0