This series adds optional feature lists to struct definitions in the QAPI schema and makes use of them to advertise the new behaviour of auto-read-only=on in file-posix.
v4: - Build fix for tests/test-qmp-cmds v3: - Added a command using the structs types to the positive test case - Renamed QAPIDoc.SymbolPart to QAPIDoc.DocPart - Applied requested comment changes - Style fixes to avoid adding pycodestyle-3 complaints - More stylistic changes to match Markus' taste better v2: - Check that features have well-formed names instead of just checking that they are strings - Use QAPISchemaFeature objects instead of dicts - Catch duplicate feature names (and test that a feature name doesn't conflict with an object member) - Added patch 4 and 5 to add rudimentary support for features to QAPIDoc so it doesn't complain about the documentation format suggested by Markus. Used that format in the documentation of dynamic-auto-read-only. Kevin Wolf (6): qapi: Add feature flags to struct types tests/qapi-schema: Test for good feature lists in structs tests/qapi-schema: Error case tests for features in structs qapi: Disentangle QAPIDoc code qapi: Allow documentation for features file-posix: Add dynamic-auto-read-only QAPI feature qapi/block-core.json | 13 +- qapi/introspect.json | 6 +- tests/qapi-schema/features-bad-type.json | 3 + .../qapi-schema/features-duplicate-name.json | 3 + tests/qapi-schema/features-missing-name.json | 3 + tests/qapi-schema/features-name-bad-type.json | 3 + tests/qapi-schema/features-no-list.json | 3 + tests/qapi-schema/features-unknown-key.json | 3 + tests/qapi-schema/qapi-schema-test.json | 39 +++ docs/devel/qapi-code-gen.txt | 38 +++ tests/test-qmp-cmds.c | 8 + scripts/qapi/common.py | 228 +++++++++++++++--- scripts/qapi/doc.py | 15 +- scripts/qapi/introspect.py | 6 +- scripts/qapi/types.py | 3 +- scripts/qapi/visit.py | 3 +- tests/Makefile.include | 6 + tests/qapi-schema/double-type.err | 2 +- tests/qapi-schema/features-bad-type.err | 1 + tests/qapi-schema/features-bad-type.exit | 1 + tests/qapi-schema/features-bad-type.out | 0 tests/qapi-schema/features-duplicate-name.err | 1 + .../qapi-schema/features-duplicate-name.exit | 1 + tests/qapi-schema/features-duplicate-name.out | 0 tests/qapi-schema/features-missing-name.err | 1 + tests/qapi-schema/features-missing-name.exit | 1 + tests/qapi-schema/features-missing-name.out | 0 tests/qapi-schema/features-name-bad-type.err | 1 + tests/qapi-schema/features-name-bad-type.exit | 1 + tests/qapi-schema/features-name-bad-type.out | 0 tests/qapi-schema/features-no-list.err | 1 + tests/qapi-schema/features-no-list.exit | 1 + tests/qapi-schema/features-no-list.out | 0 tests/qapi-schema/features-unknown-key.err | 2 + tests/qapi-schema/features-unknown-key.exit | 1 + tests/qapi-schema/features-unknown-key.out | 0 tests/qapi-schema/qapi-schema-test.out | 43 ++++ tests/qapi-schema/test-qapi.py | 7 +- tests/qapi-schema/unknown-expr-key.err | 2 +- 39 files changed, 403 insertions(+), 47 deletions(-) create mode 100644 tests/qapi-schema/features-bad-type.json create mode 100644 tests/qapi-schema/features-duplicate-name.json create mode 100644 tests/qapi-schema/features-missing-name.json create mode 100644 tests/qapi-schema/features-name-bad-type.json create mode 100644 tests/qapi-schema/features-no-list.json create mode 100644 tests/qapi-schema/features-unknown-key.json create mode 100644 tests/qapi-schema/features-bad-type.err create mode 100644 tests/qapi-schema/features-bad-type.exit create mode 100644 tests/qapi-schema/features-bad-type.out create mode 100644 tests/qapi-schema/features-duplicate-name.err create mode 100644 tests/qapi-schema/features-duplicate-name.exit create mode 100644 tests/qapi-schema/features-duplicate-name.out create mode 100644 tests/qapi-schema/features-missing-name.err create mode 100644 tests/qapi-schema/features-missing-name.exit create mode 100644 tests/qapi-schema/features-missing-name.out create mode 100644 tests/qapi-schema/features-name-bad-type.err create mode 100644 tests/qapi-schema/features-name-bad-type.exit create mode 100644 tests/qapi-schema/features-name-bad-type.out create mode 100644 tests/qapi-schema/features-no-list.err create mode 100644 tests/qapi-schema/features-no-list.exit create mode 100644 tests/qapi-schema/features-no-list.out create mode 100644 tests/qapi-schema/features-unknown-key.err create mode 100644 tests/qapi-schema/features-unknown-key.exit create mode 100644 tests/qapi-schema/features-unknown-key.out -- 2.20.1