[PATCH v2 00/23] qapi: Remove simple unions from the schema language

Markus Armbruster posted 23 patches 2 years, 7 months ago
Test checkpatch failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210917143134.412106-1-armbru@redhat.com
Maintainers: Gerd Hoffmann <kraxel@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Stefan Berger <stefanb@linux.vnet.ibm.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Michael Roth <michael.roth@amd.com>, Eric Blake <eblake@redhat.com>, Markus Armbruster <armbru@redhat.com>, Eduardo Habkost <ehabkost@redhat.com>
docs/devel/qapi-code-gen.rst                  | 137 ++----
qapi/block-core.json                          |  59 ++-
qapi/char.json                                | 187 ++++++-
qapi/machine.json                             |  42 +-
qapi/sockets.json                             |  46 +-
qapi/tpm.json                                 |  24 +-
qapi/transaction.json                         | 139 +++++-
qapi/ui.json                                  |  72 ++-
backends/tpm/tpm_emulator.c                   |   2 +-
backends/tpm/tpm_passthrough.c                |   2 +-
chardev/char-socket.c                         |   6 +-
chardev/char-udp.c                            |   4 +-
monitor/hmp-cmds.c                            |   8 +-
tests/unit/test-clone-visitor.c               |  98 ++--
tests/unit/test-qmp-cmds.c                    |  18 +-
tests/unit/test-qobject-input-visitor.c       | 460 ++++++------------
tests/unit/test-qobject-output-visitor.c      | 391 ++++-----------
tests/unit/test-yank.c                        |   6 +-
util/qemu-sockets.c                           |   8 +-
scripts/qapi/expr.py                          |  27 +-
scripts/qapi/schema.py                        | 101 +---
tests/qapi-schema/args-union.err              |   2 +-
tests/qapi-schema/args-union.json             |   8 +-
tests/qapi-schema/bad-base.err                |   2 +-
tests/qapi-schema/bad-base.json               |   8 +-
tests/qapi-schema/doc-good.json               |  13 +-
tests/qapi-schema/doc-good.out                |  22 -
tests/qapi-schema/doc-good.txt                |  20 -
tests/qapi-schema/enum-if-invalid.json        |   4 +-
tests/qapi-schema/flat-union-array-branch.err |   2 -
tests/qapi-schema/flat-union-bad-base.err     |   2 -
.../flat-union-bad-discriminator.err          |   2 -
tests/qapi-schema/flat-union-base-any.err     |   2 -
tests/qapi-schema/flat-union-base-union.err   |   2 -
tests/qapi-schema/flat-union-clash-member.err |   2 -
.../flat-union-discriminator-bad-name.err     |   2 -
tests/qapi-schema/flat-union-empty.err        |   2 -
tests/qapi-schema/flat-union-empty.json       |   4 -
.../flat-union-inline-invalid-dict.err        |   2 -
tests/qapi-schema/flat-union-int-branch.err   |   2 -
.../flat-union-invalid-branch-key.err         |   2 -
.../flat-union-invalid-discriminator.err      |   2 -
.../flat-union-invalid-if-discriminator.err   |   2 -
tests/qapi-schema/flat-union-no-base.err      |   2 -
.../flat-union-optional-discriminator.err     |   2 -
.../flat-union-string-discriminator.err       |   2 -
.../flat-union-string-discriminator.out       |   0
tests/qapi-schema/meson.build                 |  35 +-
tests/qapi-schema/qapi-schema-test.json       |  51 +-
tests/qapi-schema/qapi-schema-test.out        | 116 ++---
tests/qapi-schema/reserved-member-u.json      |   2 +-
tests/qapi-schema/reserved-type-kind.err      |   2 -
tests/qapi-schema/reserved-type-kind.json     |   2 -
tests/qapi-schema/reserved-type-kind.out      |   0
tests/qapi-schema/union-array-branch.err      |   2 +
...ay-branch.json => union-array-branch.json} |   2 +-
...rray-branch.out => union-array-branch.out} |   0
tests/qapi-schema/union-bad-base.err          |   2 +
...nion-bad-base.json => union-bad-base.json} |   0
...-union-bad-base.out => union-bad-base.out} |   0
tests/qapi-schema/union-bad-discriminator.err |   2 +
...ator.json => union-bad-discriminator.json} |   0
...inator.out => union-bad-discriminator.out} |   0
tests/qapi-schema/union-base-any.err          |   2 +
...nion-base-any.json => union-base-any.json} |   0
...-union-base-any.out => union-base-any.out} |   0
tests/qapi-schema/union-base-empty.json       |   2 +-
.../union-base-no-discriminator.err           |   2 +-
.../union-base-no-discriminator.json          |   2 +-
tests/qapi-schema/union-base-union.err        |   2 +
...-base-union.json => union-base-union.json} |   3 +
...on-base-union.out => union-base-union.out} |   0
tests/qapi-schema/union-branch-case.err       |   2 -
tests/qapi-schema/union-branch-case.json      |   2 -
tests/qapi-schema/union-branch-case.out       |   0
.../qapi-schema/union-branch-invalid-dict.err |   2 +-
.../union-branch-invalid-dict.json            |   4 +
tests/qapi-schema/union-clash-branches.err    |   2 -
tests/qapi-schema/union-clash-branches.json   |   7 -
tests/qapi-schema/union-clash-branches.out    |   0
tests/qapi-schema/union-clash-member.err      |   2 +
...sh-member.json => union-clash-member.json} |   0
...lash-member.out => union-clash-member.out} |   0
.../union-discriminator-bad-name.err          |   2 +
...json => union-discriminator-bad-name.json} |   0
...e.out => union-discriminator-bad-name.out} |   0
tests/qapi-schema/union-empty.err             |   2 +-
tests/qapi-schema/union-empty.json            |   6 +-
.../qapi-schema/union-inline-invalid-dict.err |   2 +
...ct.json => union-inline-invalid-dict.json} |   0
...mpty.out => union-inline-invalid-dict.out} |   0
tests/qapi-schema/union-int-branch.err        |   2 +
...-int-branch.json => union-int-branch.json} |   2 +-
...-invalid-dict.out => union-int-branch.out} |   0
.../qapi-schema/union-invalid-branch-key.err  |   2 +
...key.json => union-invalid-branch-key.json} |   0
...ranch.out => union-invalid-branch-key.out} |   0
.../union-invalid-discriminator.err           |   2 +
....json => union-invalid-discriminator.json} |   0
...ey.out => union-invalid-discriminator.out} |   0
.../union-invalid-if-discriminator.err        |   2 +
...on => union-invalid-if-discriminator.json} |   0
...out => union-invalid-if-discriminator.out} |   0
tests/qapi-schema/union-no-base.err           |   2 +
...-union-no-base.json => union-no-base.json} |   2 +-
...if-discriminator.out => union-no-base.out} |   0
tests/qapi-schema/union-optional-branch.err   |   2 -
tests/qapi-schema/union-optional-branch.json  |   2 -
tests/qapi-schema/union-optional-branch.out   |   0
.../union-optional-discriminator.err          |   2 +
...json => union-optional-discriminator.json} |   0
...e.out => union-optional-discriminator.out} |   0
.../union-string-discriminator.err            |   2 +
...r.json => union-string-discriminator.json} |   0
...tor.out => union-string-discriminator.out} |   0
tests/qapi-schema/union-unknown.err           |   2 +-
tests/qapi-schema/union-unknown.json          |   5 +-
117 files changed, 1020 insertions(+), 1223 deletions(-)
delete mode 100644 tests/qapi-schema/flat-union-array-branch.err
delete mode 100644 tests/qapi-schema/flat-union-bad-base.err
delete mode 100644 tests/qapi-schema/flat-union-bad-discriminator.err
delete mode 100644 tests/qapi-schema/flat-union-base-any.err
delete mode 100644 tests/qapi-schema/flat-union-base-union.err
delete mode 100644 tests/qapi-schema/flat-union-clash-member.err
delete mode 100644 tests/qapi-schema/flat-union-discriminator-bad-name.err
delete mode 100644 tests/qapi-schema/flat-union-empty.err
delete mode 100644 tests/qapi-schema/flat-union-empty.json
delete mode 100644 tests/qapi-schema/flat-union-inline-invalid-dict.err
delete mode 100644 tests/qapi-schema/flat-union-int-branch.err
delete mode 100644 tests/qapi-schema/flat-union-invalid-branch-key.err
delete mode 100644 tests/qapi-schema/flat-union-invalid-discriminator.err
delete mode 100644 tests/qapi-schema/flat-union-invalid-if-discriminator.err
delete mode 100644 tests/qapi-schema/flat-union-no-base.err
delete mode 100644 tests/qapi-schema/flat-union-optional-discriminator.err
delete mode 100644 tests/qapi-schema/flat-union-string-discriminator.err
delete mode 100644 tests/qapi-schema/flat-union-string-discriminator.out
delete mode 100644 tests/qapi-schema/reserved-type-kind.err
delete mode 100644 tests/qapi-schema/reserved-type-kind.json
delete mode 100644 tests/qapi-schema/reserved-type-kind.out
create mode 100644 tests/qapi-schema/union-array-branch.err
rename tests/qapi-schema/{flat-union-array-branch.json => union-array-branch.json} (86%)
rename tests/qapi-schema/{flat-union-array-branch.out => union-array-branch.out} (100%)
create mode 100644 tests/qapi-schema/union-bad-base.err
rename tests/qapi-schema/{flat-union-bad-base.json => union-bad-base.json} (100%)
rename tests/qapi-schema/{flat-union-bad-base.out => union-bad-base.out} (100%)
create mode 100644 tests/qapi-schema/union-bad-discriminator.err
rename tests/qapi-schema/{flat-union-bad-discriminator.json => union-bad-discriminator.json} (100%)
rename tests/qapi-schema/{flat-union-bad-discriminator.out => union-bad-discriminator.out} (100%)
create mode 100644 tests/qapi-schema/union-base-any.err
rename tests/qapi-schema/{flat-union-base-any.json => union-base-any.json} (100%)
rename tests/qapi-schema/{flat-union-base-any.out => union-base-any.out} (100%)
create mode 100644 tests/qapi-schema/union-base-union.err
rename tests/qapi-schema/{flat-union-base-union.json => union-base-union.json} (86%)
rename tests/qapi-schema/{flat-union-base-union.out => union-base-union.out} (100%)
delete mode 100644 tests/qapi-schema/union-branch-case.err
delete mode 100644 tests/qapi-schema/union-branch-case.json
delete mode 100644 tests/qapi-schema/union-branch-case.out
delete mode 100644 tests/qapi-schema/union-clash-branches.err
delete mode 100644 tests/qapi-schema/union-clash-branches.json
delete mode 100644 tests/qapi-schema/union-clash-branches.out
create mode 100644 tests/qapi-schema/union-clash-member.err
rename tests/qapi-schema/{flat-union-clash-member.json => union-clash-member.json} (100%)
rename tests/qapi-schema/{flat-union-clash-member.out => union-clash-member.out} (100%)
create mode 100644 tests/qapi-schema/union-discriminator-bad-name.err
rename tests/qapi-schema/{flat-union-discriminator-bad-name.json => union-discriminator-bad-name.json} (100%)
rename tests/qapi-schema/{flat-union-discriminator-bad-name.out => union-discriminator-bad-name.out} (100%)
create mode 100644 tests/qapi-schema/union-inline-invalid-dict.err
rename tests/qapi-schema/{flat-union-inline-invalid-dict.json => union-inline-invalid-dict.json} (100%)
rename tests/qapi-schema/{flat-union-empty.out => union-inline-invalid-dict.out} (100%)
create mode 100644 tests/qapi-schema/union-int-branch.err
rename tests/qapi-schema/{flat-union-int-branch.json => union-int-branch.json} (86%)
rename tests/qapi-schema/{flat-union-inline-invalid-dict.out => union-int-branch.out} (100%)
create mode 100644 tests/qapi-schema/union-invalid-branch-key.err
rename tests/qapi-schema/{flat-union-invalid-branch-key.json => union-invalid-branch-key.json} (100%)
rename tests/qapi-schema/{flat-union-int-branch.out => union-invalid-branch-key.out} (100%)
create mode 100644 tests/qapi-schema/union-invalid-discriminator.err
rename tests/qapi-schema/{flat-union-invalid-discriminator.json => union-invalid-discriminator.json} (100%)
rename tests/qapi-schema/{flat-union-invalid-branch-key.out => union-invalid-discriminator.out} (100%)
create mode 100644 tests/qapi-schema/union-invalid-if-discriminator.err
rename tests/qapi-schema/{flat-union-invalid-if-discriminator.json => union-invalid-if-discriminator.json} (100%)
rename tests/qapi-schema/{flat-union-invalid-discriminator.out => union-invalid-if-discriminator.out} (100%)
create mode 100644 tests/qapi-schema/union-no-base.err
rename tests/qapi-schema/{flat-union-no-base.json => union-no-base.json} (90%)
rename tests/qapi-schema/{flat-union-invalid-if-discriminator.out => union-no-base.out} (100%)
delete mode 100644 tests/qapi-schema/union-optional-branch.err
delete mode 100644 tests/qapi-schema/union-optional-branch.json
delete mode 100644 tests/qapi-schema/union-optional-branch.out
create mode 100644 tests/qapi-schema/union-optional-discriminator.err
rename tests/qapi-schema/{flat-union-optional-discriminator.json => union-optional-discriminator.json} (100%)
rename tests/qapi-schema/{flat-union-no-base.out => union-optional-discriminator.out} (100%)
create mode 100644 tests/qapi-schema/union-string-discriminator.err
rename tests/qapi-schema/{flat-union-string-discriminator.json => union-string-discriminator.json} (100%)
rename tests/qapi-schema/{flat-union-optional-discriminator.out => union-string-discriminator.out} (100%)
[PATCH v2 00/23] qapi: Remove simple unions from the schema language
Posted by Markus Armbruster 2 years, 7 months ago
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.

Get rid of them.  We should've done this long ago.

This adds some boilerplate to the schema:

    $ git-diff --shortstat master qapi
     7 files changed, 461 insertions(+), 59 deletions(-)

Well worth the language simplification, in my opinion:

    $ git-diff --stat master scripts/ docs/
     docs/devel/qapi-code-gen.rst | 137 ++++++++++---------------------------------
     scripts/qapi/common.py       |  19 ++----
     scripts/qapi/expr.py         |  48 +++++++--------
     scripts/qapi/schema.py       | 101 +++++++------------------------
     4 files changed, 80 insertions(+), 225 deletions(-)

The complete diffstat looks even better, but is somewhat misleading,
because it's dominated by two tests rewritten in a much more compact
way.

v2:
* PATCH 03-10: Since tags tidied up [Eric]
* PATCH 19: Commit message typo fixed, -Union2 renamed to -Union
  [Eric]
* PATCH 22: New

Cc: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Hanna Reitz <hreitz@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>
Cc: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Stefan Berger <stefanb@linux.vnet.ibm.com>

Markus Armbruster (23):
  qapi: Tidy up unusual line breaks
  qapi: Stop enforcing "type name should not end in 'Kind'
  qapi: Convert simple union KeyValue to flat one
  qapi: Convert simple union InputEvent to flat one
  qapi: Convert simple union TpmTypeOptions to flat one
  qapi: Convert simple union MemoryDeviceInfo to flat one
  qapi: Convert simple union ChardevBackend to flat one
  qapi: Convert simple union SocketAddressLegacy to flat one
  qapi: Convert simple union ImageInfoSpecific to flat one
  qapi: Convert simple union TransactionAction to flat one
  tests/qapi-schema: Prepare for simple union UserDefListUnion removal
  test-qobject-input-visitor: Wean off UserDefListUnion
  test-qobject-output-visitor: Wean off UserDefListUnion
  test-clone-visitor: Wean off UserDefListUnion
  tests/qapi-schema: Wean off UserDefListUnion
  tests/qapi-schema: Simple union UserDefListUnion is now unused, drop
  tests/qapi-schema: Rewrite simple union TestIfUnion to be flat
  test-clone-visitor: Wean off __org.qemu_x-Union1
  tests/qapi-schema: Drop simple union __org.qemu_x-Union1
  tests/qapi-schema: Purge simple unions from tests
  qapi: Drop simple unions
  tests/qapi-schema: Rename flat-union-* test cases to union-*
  test-clone-visitor: Correct an accidental rename

 docs/devel/qapi-code-gen.rst                  | 137 ++----
 qapi/block-core.json                          |  59 ++-
 qapi/char.json                                | 187 ++++++-
 qapi/machine.json                             |  42 +-
 qapi/sockets.json                             |  46 +-
 qapi/tpm.json                                 |  24 +-
 qapi/transaction.json                         | 139 +++++-
 qapi/ui.json                                  |  72 ++-
 backends/tpm/tpm_emulator.c                   |   2 +-
 backends/tpm/tpm_passthrough.c                |   2 +-
 chardev/char-socket.c                         |   6 +-
 chardev/char-udp.c                            |   4 +-
 monitor/hmp-cmds.c                            |   8 +-
 tests/unit/test-clone-visitor.c               |  98 ++--
 tests/unit/test-qmp-cmds.c                    |  18 +-
 tests/unit/test-qobject-input-visitor.c       | 460 ++++++------------
 tests/unit/test-qobject-output-visitor.c      | 391 ++++-----------
 tests/unit/test-yank.c                        |   6 +-
 util/qemu-sockets.c                           |   8 +-
 scripts/qapi/expr.py                          |  27 +-
 scripts/qapi/schema.py                        | 101 +---
 tests/qapi-schema/args-union.err              |   2 +-
 tests/qapi-schema/args-union.json             |   8 +-
 tests/qapi-schema/bad-base.err                |   2 +-
 tests/qapi-schema/bad-base.json               |   8 +-
 tests/qapi-schema/doc-good.json               |  13 +-
 tests/qapi-schema/doc-good.out                |  22 -
 tests/qapi-schema/doc-good.txt                |  20 -
 tests/qapi-schema/enum-if-invalid.json        |   4 +-
 tests/qapi-schema/flat-union-array-branch.err |   2 -
 tests/qapi-schema/flat-union-bad-base.err     |   2 -
 .../flat-union-bad-discriminator.err          |   2 -
 tests/qapi-schema/flat-union-base-any.err     |   2 -
 tests/qapi-schema/flat-union-base-union.err   |   2 -
 tests/qapi-schema/flat-union-clash-member.err |   2 -
 .../flat-union-discriminator-bad-name.err     |   2 -
 tests/qapi-schema/flat-union-empty.err        |   2 -
 tests/qapi-schema/flat-union-empty.json       |   4 -
 .../flat-union-inline-invalid-dict.err        |   2 -
 tests/qapi-schema/flat-union-int-branch.err   |   2 -
 .../flat-union-invalid-branch-key.err         |   2 -
 .../flat-union-invalid-discriminator.err      |   2 -
 .../flat-union-invalid-if-discriminator.err   |   2 -
 tests/qapi-schema/flat-union-no-base.err      |   2 -
 .../flat-union-optional-discriminator.err     |   2 -
 .../flat-union-string-discriminator.err       |   2 -
 .../flat-union-string-discriminator.out       |   0
 tests/qapi-schema/meson.build                 |  35 +-
 tests/qapi-schema/qapi-schema-test.json       |  51 +-
 tests/qapi-schema/qapi-schema-test.out        | 116 ++---
 tests/qapi-schema/reserved-member-u.json      |   2 +-
 tests/qapi-schema/reserved-type-kind.err      |   2 -
 tests/qapi-schema/reserved-type-kind.json     |   2 -
 tests/qapi-schema/reserved-type-kind.out      |   0
 tests/qapi-schema/union-array-branch.err      |   2 +
 ...ay-branch.json => union-array-branch.json} |   2 +-
 ...rray-branch.out => union-array-branch.out} |   0
 tests/qapi-schema/union-bad-base.err          |   2 +
 ...nion-bad-base.json => union-bad-base.json} |   0
 ...-union-bad-base.out => union-bad-base.out} |   0
 tests/qapi-schema/union-bad-discriminator.err |   2 +
 ...ator.json => union-bad-discriminator.json} |   0
 ...inator.out => union-bad-discriminator.out} |   0
 tests/qapi-schema/union-base-any.err          |   2 +
 ...nion-base-any.json => union-base-any.json} |   0
 ...-union-base-any.out => union-base-any.out} |   0
 tests/qapi-schema/union-base-empty.json       |   2 +-
 .../union-base-no-discriminator.err           |   2 +-
 .../union-base-no-discriminator.json          |   2 +-
 tests/qapi-schema/union-base-union.err        |   2 +
 ...-base-union.json => union-base-union.json} |   3 +
 ...on-base-union.out => union-base-union.out} |   0
 tests/qapi-schema/union-branch-case.err       |   2 -
 tests/qapi-schema/union-branch-case.json      |   2 -
 tests/qapi-schema/union-branch-case.out       |   0
 .../qapi-schema/union-branch-invalid-dict.err |   2 +-
 .../union-branch-invalid-dict.json            |   4 +
 tests/qapi-schema/union-clash-branches.err    |   2 -
 tests/qapi-schema/union-clash-branches.json   |   7 -
 tests/qapi-schema/union-clash-branches.out    |   0
 tests/qapi-schema/union-clash-member.err      |   2 +
 ...sh-member.json => union-clash-member.json} |   0
 ...lash-member.out => union-clash-member.out} |   0
 .../union-discriminator-bad-name.err          |   2 +
 ...json => union-discriminator-bad-name.json} |   0
 ...e.out => union-discriminator-bad-name.out} |   0
 tests/qapi-schema/union-empty.err             |   2 +-
 tests/qapi-schema/union-empty.json            |   6 +-
 .../qapi-schema/union-inline-invalid-dict.err |   2 +
 ...ct.json => union-inline-invalid-dict.json} |   0
 ...mpty.out => union-inline-invalid-dict.out} |   0
 tests/qapi-schema/union-int-branch.err        |   2 +
 ...-int-branch.json => union-int-branch.json} |   2 +-
 ...-invalid-dict.out => union-int-branch.out} |   0
 .../qapi-schema/union-invalid-branch-key.err  |   2 +
 ...key.json => union-invalid-branch-key.json} |   0
 ...ranch.out => union-invalid-branch-key.out} |   0
 .../union-invalid-discriminator.err           |   2 +
 ....json => union-invalid-discriminator.json} |   0
 ...ey.out => union-invalid-discriminator.out} |   0
 .../union-invalid-if-discriminator.err        |   2 +
 ...on => union-invalid-if-discriminator.json} |   0
 ...out => union-invalid-if-discriminator.out} |   0
 tests/qapi-schema/union-no-base.err           |   2 +
 ...-union-no-base.json => union-no-base.json} |   2 +-
 ...if-discriminator.out => union-no-base.out} |   0
 tests/qapi-schema/union-optional-branch.err   |   2 -
 tests/qapi-schema/union-optional-branch.json  |   2 -
 tests/qapi-schema/union-optional-branch.out   |   0
 .../union-optional-discriminator.err          |   2 +
 ...json => union-optional-discriminator.json} |   0
 ...e.out => union-optional-discriminator.out} |   0
 .../union-string-discriminator.err            |   2 +
 ...r.json => union-string-discriminator.json} |   0
 ...tor.out => union-string-discriminator.out} |   0
 tests/qapi-schema/union-unknown.err           |   2 +-
 tests/qapi-schema/union-unknown.json          |   5 +-
 117 files changed, 1020 insertions(+), 1223 deletions(-)
 delete mode 100644 tests/qapi-schema/flat-union-array-branch.err
 delete mode 100644 tests/qapi-schema/flat-union-bad-base.err
 delete mode 100644 tests/qapi-schema/flat-union-bad-discriminator.err
 delete mode 100644 tests/qapi-schema/flat-union-base-any.err
 delete mode 100644 tests/qapi-schema/flat-union-base-union.err
 delete mode 100644 tests/qapi-schema/flat-union-clash-member.err
 delete mode 100644 tests/qapi-schema/flat-union-discriminator-bad-name.err
 delete mode 100644 tests/qapi-schema/flat-union-empty.err
 delete mode 100644 tests/qapi-schema/flat-union-empty.json
 delete mode 100644 tests/qapi-schema/flat-union-inline-invalid-dict.err
 delete mode 100644 tests/qapi-schema/flat-union-int-branch.err
 delete mode 100644 tests/qapi-schema/flat-union-invalid-branch-key.err
 delete mode 100644 tests/qapi-schema/flat-union-invalid-discriminator.err
 delete mode 100644 tests/qapi-schema/flat-union-invalid-if-discriminator.err
 delete mode 100644 tests/qapi-schema/flat-union-no-base.err
 delete mode 100644 tests/qapi-schema/flat-union-optional-discriminator.err
 delete mode 100644 tests/qapi-schema/flat-union-string-discriminator.err
 delete mode 100644 tests/qapi-schema/flat-union-string-discriminator.out
 delete mode 100644 tests/qapi-schema/reserved-type-kind.err
 delete mode 100644 tests/qapi-schema/reserved-type-kind.json
 delete mode 100644 tests/qapi-schema/reserved-type-kind.out
 create mode 100644 tests/qapi-schema/union-array-branch.err
 rename tests/qapi-schema/{flat-union-array-branch.json => union-array-branch.json} (86%)
 rename tests/qapi-schema/{flat-union-array-branch.out => union-array-branch.out} (100%)
 create mode 100644 tests/qapi-schema/union-bad-base.err
 rename tests/qapi-schema/{flat-union-bad-base.json => union-bad-base.json} (100%)
 rename tests/qapi-schema/{flat-union-bad-base.out => union-bad-base.out} (100%)
 create mode 100644 tests/qapi-schema/union-bad-discriminator.err
 rename tests/qapi-schema/{flat-union-bad-discriminator.json => union-bad-discriminator.json} (100%)
 rename tests/qapi-schema/{flat-union-bad-discriminator.out => union-bad-discriminator.out} (100%)
 create mode 100644 tests/qapi-schema/union-base-any.err
 rename tests/qapi-schema/{flat-union-base-any.json => union-base-any.json} (100%)
 rename tests/qapi-schema/{flat-union-base-any.out => union-base-any.out} (100%)
 create mode 100644 tests/qapi-schema/union-base-union.err
 rename tests/qapi-schema/{flat-union-base-union.json => union-base-union.json} (86%)
 rename tests/qapi-schema/{flat-union-base-union.out => union-base-union.out} (100%)
 delete mode 100644 tests/qapi-schema/union-branch-case.err
 delete mode 100644 tests/qapi-schema/union-branch-case.json
 delete mode 100644 tests/qapi-schema/union-branch-case.out
 delete mode 100644 tests/qapi-schema/union-clash-branches.err
 delete mode 100644 tests/qapi-schema/union-clash-branches.json
 delete mode 100644 tests/qapi-schema/union-clash-branches.out
 create mode 100644 tests/qapi-schema/union-clash-member.err
 rename tests/qapi-schema/{flat-union-clash-member.json => union-clash-member.json} (100%)
 rename tests/qapi-schema/{flat-union-clash-member.out => union-clash-member.out} (100%)
 create mode 100644 tests/qapi-schema/union-discriminator-bad-name.err
 rename tests/qapi-schema/{flat-union-discriminator-bad-name.json => union-discriminator-bad-name.json} (100%)
 rename tests/qapi-schema/{flat-union-discriminator-bad-name.out => union-discriminator-bad-name.out} (100%)
 create mode 100644 tests/qapi-schema/union-inline-invalid-dict.err
 rename tests/qapi-schema/{flat-union-inline-invalid-dict.json => union-inline-invalid-dict.json} (100%)
 rename tests/qapi-schema/{flat-union-empty.out => union-inline-invalid-dict.out} (100%)
 create mode 100644 tests/qapi-schema/union-int-branch.err
 rename tests/qapi-schema/{flat-union-int-branch.json => union-int-branch.json} (86%)
 rename tests/qapi-schema/{flat-union-inline-invalid-dict.out => union-int-branch.out} (100%)
 create mode 100644 tests/qapi-schema/union-invalid-branch-key.err
 rename tests/qapi-schema/{flat-union-invalid-branch-key.json => union-invalid-branch-key.json} (100%)
 rename tests/qapi-schema/{flat-union-int-branch.out => union-invalid-branch-key.out} (100%)
 create mode 100644 tests/qapi-schema/union-invalid-discriminator.err
 rename tests/qapi-schema/{flat-union-invalid-discriminator.json => union-invalid-discriminator.json} (100%)
 rename tests/qapi-schema/{flat-union-invalid-branch-key.out => union-invalid-discriminator.out} (100%)
 create mode 100644 tests/qapi-schema/union-invalid-if-discriminator.err
 rename tests/qapi-schema/{flat-union-invalid-if-discriminator.json => union-invalid-if-discriminator.json} (100%)
 rename tests/qapi-schema/{flat-union-invalid-discriminator.out => union-invalid-if-discriminator.out} (100%)
 create mode 100644 tests/qapi-schema/union-no-base.err
 rename tests/qapi-schema/{flat-union-no-base.json => union-no-base.json} (90%)
 rename tests/qapi-schema/{flat-union-invalid-if-discriminator.out => union-no-base.out} (100%)
 delete mode 100644 tests/qapi-schema/union-optional-branch.err
 delete mode 100644 tests/qapi-schema/union-optional-branch.json
 delete mode 100644 tests/qapi-schema/union-optional-branch.out
 create mode 100644 tests/qapi-schema/union-optional-discriminator.err
 rename tests/qapi-schema/{flat-union-optional-discriminator.json => union-optional-discriminator.json} (100%)
 rename tests/qapi-schema/{flat-union-no-base.out => union-optional-discriminator.out} (100%)
 create mode 100644 tests/qapi-schema/union-string-discriminator.err
 rename tests/qapi-schema/{flat-union-string-discriminator.json => union-string-discriminator.json} (100%)
 rename tests/qapi-schema/{flat-union-optional-discriminator.out => union-string-discriminator.out} (100%)

-- 
2.31.1