docs/devel/qapi-code-gen.txt | 28 ++++--- qapi/block-core.json | 14 ---- qapi/pragma.json | 64 ++++++++++++--- qga/qapi-schema.json | 6 +- block/monitor/block-hmp-cmds.c | 10 --- blockdev.c | 8 -- tests/unit/test-qmp-cmds.c | 17 ++-- tests/unit/test-qmp-event.c | 6 +- hmp-commands.hx | 15 ---- scripts/qapi/common.py | 8 +- scripts/qapi/expr.py | 94 ++++++++++++++-------- scripts/qapi/parser.py | 30 +++---- scripts/qapi/schema.py | 2 +- scripts/qapi/source.py | 10 ++- tests/qapi-schema/alternate-clash.err | 2 +- tests/qapi-schema/alternate-clash.json | 9 +-- tests/qapi-schema/args-member-case.err | 2 +- tests/qapi-schema/args-name-clash.err | 2 - tests/qapi-schema/args-name-clash.json | 4 - tests/qapi-schema/doc-bad-union-member.json | 4 +- tests/qapi-schema/doc-good.json | 4 +- tests/qapi-schema/doc-good.out | 4 +- tests/qapi-schema/doc-good.txt | 2 +- tests/qapi-schema/doc-invalid-return.json | 4 +- tests/qapi-schema/double-type.err | 2 +- tests/qapi-schema/double-type.json | 2 +- tests/qapi-schema/enum-clash-member.err | 2 +- tests/qapi-schema/enum-clash-member.json | 1 + tests/qapi-schema/enum-member-case.err | 2 +- tests/qapi-schema/enum-member-case.json | 2 +- tests/qapi-schema/event-case.err | 2 + tests/qapi-schema/event-case.json | 2 - tests/qapi-schema/event-case.out | 14 ---- tests/qapi-schema/event-member-invalid-dict.err | 2 +- tests/qapi-schema/event-member-invalid-dict.json | 2 + tests/qapi-schema/features-deprecated-type.err | 2 +- tests/qapi-schema/features-deprecated-type.json | 2 +- .../flat-union-inline-invalid-dict.json | 4 +- tests/qapi-schema/flat-union-inline.err | 2 - tests/qapi-schema/flat-union-inline.json | 11 --- tests/qapi-schema/flat-union-no-base.err | 2 +- tests/qapi-schema/flat-union-no-base.json | 1 - tests/qapi-schema/meson.build | 14 ++-- .../nested-struct-data-invalid-dict.err | 2 +- .../nested-struct-data-invalid-dict.json | 3 +- tests/qapi-schema/nested-struct-data.json | 2 +- tests/qapi-schema/pragma-doc-required-crap.err | 1 - .../pragma-name-case-whitelist-crap.err | 1 - .../pragma-name-case-whitelist-crap.json | 3 - .../qapi-schema/pragma-returns-whitelist-crap.err | 1 - .../qapi-schema/pragma-returns-whitelist-crap.json | 3 - tests/qapi-schema/pragma-value-not-bool.err | 1 + ...quired-crap.json => pragma-value-not-bool.json} | 2 +- ...gs-name-clash.out => pragma-value-not-bool.out} | 0 tests/qapi-schema/pragma-value-not-list-of-str.err | 1 + .../qapi-schema/pragma-value-not-list-of-str.json | 3 + ...inline.out => pragma-value-not-list-of-str.out} | 0 tests/qapi-schema/pragma-value-not-list.err | 1 + tests/qapi-schema/pragma-value-not-list.json | 2 + ...required-crap.out => pragma-value-not-list.out} | 0 tests/qapi-schema/qapi-schema-test.json | 35 ++++---- tests/qapi-schema/qapi-schema-test.out | 42 +++++----- tests/qapi-schema/redefined-builtin.err | 2 - tests/qapi-schema/redefined-builtin.json | 2 - tests/qapi-schema/redefined-predefined.err | 2 + tests/qapi-schema/redefined-predefined.json | 2 + ...whitelist-crap.out => redefined-predefined.out} | 0 tests/qapi-schema/redefined-type.err | 6 +- tests/qapi-schema/redefined-type.json | 4 +- tests/qapi-schema/reserved-member-u.err | 2 +- tests/qapi-schema/reserved-member-u.json | 2 +- tests/qapi-schema/returns-bad-type.err | 2 + ...eturns-whitelist.json => returns-bad-type.json} | 2 +- ...rns-whitelist-crap.out => returns-bad-type.out} | 0 tests/qapi-schema/returns-whitelist.err | 2 - tests/qapi-schema/struct-data-invalid.err | 2 +- tests/qapi-schema/struct-data-invalid.json | 2 +- tests/qapi-schema/struct-member-invalid-dict.err | 4 +- tests/qapi-schema/struct-member-invalid-dict.json | 5 +- tests/qapi-schema/struct-member-invalid.err | 2 +- tests/qapi-schema/struct-member-invalid.json | 2 +- tests/qapi-schema/struct-member-name-clash.err | 2 + tests/qapi-schema/struct-member-name-clash.json | 5 ++ ...ed-builtin.out => struct-member-name-clash.out} | 0 tests/qapi-schema/type-case.err | 2 + tests/qapi-schema/type-case.json | 2 + .../{returns-whitelist.out => type-case.out} | 0 tests/qapi-schema/union-branch-case.err | 2 +- tests/qapi-schema/union-clash-branches.err | 2 +- tests/qapi-schema/union-clash-branches.json | 6 +- tests/qapi-schema/unknown-expr-key.err | 2 +- tests/qapi-schema/unknown-expr-key.json | 2 +- 92 files changed, 305 insertions(+), 288 deletions(-) delete mode 100644 tests/qapi-schema/args-name-clash.err delete mode 100644 tests/qapi-schema/args-name-clash.json delete mode 100644 tests/qapi-schema/flat-union-inline.err delete mode 100644 tests/qapi-schema/flat-union-inline.json delete mode 100644 tests/qapi-schema/pragma-doc-required-crap.err delete mode 100644 tests/qapi-schema/pragma-name-case-whitelist-crap.err delete mode 100644 tests/qapi-schema/pragma-name-case-whitelist-crap.json delete mode 100644 tests/qapi-schema/pragma-returns-whitelist-crap.err delete mode 100644 tests/qapi-schema/pragma-returns-whitelist-crap.json create mode 100644 tests/qapi-schema/pragma-value-not-bool.err rename tests/qapi-schema/{pragma-doc-required-crap.json => pragma-value-not-bool.json} (55%) rename tests/qapi-schema/{args-name-clash.out => pragma-value-not-bool.out} (100%) create mode 100644 tests/qapi-schema/pragma-value-not-list-of-str.err create mode 100644 tests/qapi-schema/pragma-value-not-list-of-str.json rename tests/qapi-schema/{flat-union-inline.out => pragma-value-not-list-of-str.out} (100%) create mode 100644 tests/qapi-schema/pragma-value-not-list.err create mode 100644 tests/qapi-schema/pragma-value-not-list.json rename tests/qapi-schema/{pragma-doc-required-crap.out => pragma-value-not-list.out} (100%) delete mode 100644 tests/qapi-schema/redefined-builtin.err delete mode 100644 tests/qapi-schema/redefined-builtin.json create mode 100644 tests/qapi-schema/redefined-predefined.err create mode 100644 tests/qapi-schema/redefined-predefined.json rename tests/qapi-schema/{pragma-name-case-whitelist-crap.out => redefined-predefined.out} (100%) create mode 100644 tests/qapi-schema/returns-bad-type.err rename tests/qapi-schema/{returns-whitelist.json => returns-bad-type.json} (91%) rename tests/qapi-schema/{pragma-returns-whitelist-crap.out => returns-bad-type.out} (100%) delete mode 100644 tests/qapi-schema/returns-whitelist.err create mode 100644 tests/qapi-schema/struct-member-name-clash.err create mode 100644 tests/qapi-schema/struct-member-name-clash.json rename tests/qapi-schema/{redefined-builtin.out => struct-member-name-clash.out} (100%) create mode 100644 tests/qapi-schema/type-case.err create mode 100644 tests/qapi-schema/type-case.json rename tests/qapi-schema/{returns-whitelist.out => type-case.out} (100%)