qapi: Fix code generation for empty modules
commit3e7fb5811baab213dcc7149c3aa69442d683c26c
authorMarkus Armbruster <armbru@redhat.com>
Wed, 20 Nov 2019 18:25:50 +0000 (20 19:25 +0100)
committerMarkus Armbruster <armbru@redhat.com>
Tue, 14 Jan 2020 10:01:58 +0000 (14 11:01 +0100)
tree4488c46b75ebf4f4746602217b51f29fc6fb5527
parenta9f1dd7ee001b645b81ad67217b582e51a44d545
qapi: Fix code generation for empty modules

When a sub-module doesn't contain any definitions, we don't generate
code for it, but we do generate the #include.

We generate code only for modules that get visited.
QAPISchema.visit() visits only modules that have definitions.  It can
visit modules multiple times.

Clean this up as follows.  Collect entities in their QAPISchemaModule.
Have QAPISchema.visit() call QAPISchemaModule.visit() for each module.
Have QAPISchemaModule.visit() call .visit_module() for itself, and
QAPISchemaEntity.visit() for each of its entities.  This way, we visit
each module exactly once.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20191120182551.23795-6-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
scripts/qapi/schema.py
tests/qapi-schema/empty.out
tests/qapi-schema/include-repetition.out
tests/qapi-schema/qapi-schema-test.out