I'm still working on my documentation patches for QAPI visitors (https://lists.gnu.org/archive/html/qemu-devel/2016-01/msg03504.html), but am finding it easier to nuke bad code up front than to document that it is bad only to later nuke it. So this pulls bits and pieces of other patches that Markus I have previously posted, along with some new glue, to get rid of some of the worst of the cruft.
I'm calling this v10 because it is based on some of the v9 patches mentioned above, but the backport-diff can't see through retitles or anything else, so claims most of it is new: 001/13:[----] [--] 'qapi: Simplify excess input reporting in input visitors' 002/13:[down] 'qapi: Forbid empty unions and useless alternates' 003/13:[down] 'qapi: Reposition error checks in gen_visit_fields()' 004/13:[down] 'qapi: Drop pointless gotos in generated code' 005/13:[down] 'qapi-visit: Simplify how we visit common union members' 006/13:[0065] [FC] 'qapi-visit: Unify struct and union visit' 007/13:[down] 'qapi-visit: Less indirection in visit_type_Foo_fields()' 008/13:[down] 'qapi: Adjust layout of FooList types' 009/13:[down] 'qapi: Emit structs used as variants in topological order' 010/13:[down] 'qapi: Don't box struct branch of alternate' 011/13:[down] 'qapi: Don't box branches of flat unions' 012/13:[down] 'qapi: Delete unused visit_start_union()' 013/13:[down] 'qapi: Change visit_start_implicit_struct to visit_start_alternate' Eric Blake (11): qapi: Simplify excess input reporting in input visitors qapi: Forbid empty unions and useless alternates qapi: Reposition error checks in gen_visit_fields() qapi: Drop pointless gotos in generated code qapi-visit: Less indirection in visit_type_Foo_fields() qapi: Adjust layout of FooList types qapi: Emit structs used as variants in topological order qapi: Don't box struct branch of alternate qapi: Don't box branches of flat unions qapi: Delete unused visit_start_union() qapi: Change visit_start_implicit_struct to visit_start_alternate Markus Armbruster (2): qapi-visit: Simplify how we visit common union members qapi-visit: Unify struct and union visit include/qapi/visitor.h | 63 +++++++--- include/qapi/visitor-impl.h | 21 ++-- scripts/qapi-event.py | 7 +- scripts/qapi-types.py | 30 +++-- scripts/qapi-visit.py | 198 +++++++++++++------------------- scripts/qapi.py | 31 +++-- qapi/qapi-visit-core.c | 44 +++---- cpus.c | 18 +-- hmp.c | 12 +- qapi/opts-visitor.c | 16 +-- qapi/qapi-dealloc-visitor.c | 42 ++----- qapi/qmp-input-visitor.c | 43 +++---- qapi/qmp-output-visitor.c | 3 +- qapi/string-input-visitor.c | 4 +- qapi/string-output-visitor.c | 2 +- tests/test-qmp-input-visitor.c | 31 ++++- tests/test-qmp-output-visitor.c | 5 +- docs/qapi-code-gen.txt | 15 +-- tests/qapi-schema/alternate-empty.err | 1 + tests/qapi-schema/alternate-empty.exit | 2 +- tests/qapi-schema/alternate-empty.json | 2 +- tests/qapi-schema/alternate-empty.out | 5 - tests/qapi-schema/flat-union-empty.err | 1 + tests/qapi-schema/flat-union-empty.exit | 2 +- tests/qapi-schema/flat-union-empty.json | 2 +- tests/qapi-schema/flat-union-empty.out | 9 -- tests/qapi-schema/qapi-schema-test.json | 2 + tests/qapi-schema/qapi-schema-test.out | 2 + tests/qapi-schema/union-empty.err | 1 + tests/qapi-schema/union-empty.exit | 2 +- tests/qapi-schema/union-empty.json | 2 +- tests/qapi-schema/union-empty.out | 6 - 32 files changed, 295 insertions(+), 329 deletions(-) -- 2.5.0