]> git.ipfire.org Git - thirdparty/qemu.git/commit
qapi: Fix doc comment checking for commands and events
authorMarkus Armbruster <armbru@redhat.com>
Thu, 24 Oct 2019 11:02:29 +0000 (13:02 +0200)
committerMarkus Armbruster <armbru@redhat.com>
Tue, 29 Oct 2019 06:35:16 +0000 (07:35 +0100)
commitbf83f04e13063bb723fb8b9df789a3613c6d0ceb
tree67a2fe4a8810cef47a08cd141e3fffe5f0fed463
parent7faefad184201b10c2db4270b2bb93e2a5e9552b
qapi: Fix doc comment checking for commands and events

When a command's 'data' is an object, its doc comment describes the
arguments defined there.  When 'data' names a type, the doc comment
does not describe arguments.  Instead, the doc generator inserts a
pointer to the named type.

An event's doc comment works the same.

We don't actually check doc comments for commands and events.
Instead, QAPISchema._def_command() forwards the doc comment to the
implicit argument type, where it gets checked.  Works because the
check only cares for the implicit argument type's members.

Not only is this needlessly hard to understand, it actually falls
apart in two cases:

* When 'data' is empty, there is nothing to forward to, and the doc
  comment remains unchecked.  Demonstrated by test doc-bad-event-arg.

* When 'data' names a type, we can't forward, as the type has its own
  doc comment.  The command or event's doc comment remains unchecked.
  Demonstrated by test doc-bad-boxed-command-arg.

The forwarding goes back to commit 069fb5b250 "qapi: Prepare for
requiring more complete documentation", put to use in commit
816a57cd6e "qapi: Fix detection of bogus member documentation".  That
fix was incomplete.

To fix this, make QAPISchemaCommand and QAPISchemaEvent check doc
comments, and drop the forwarding of doc comments to implicit argument
types.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20191024110237.30963-12-armbru@redhat.com>
qapi/net.json
scripts/qapi/doc.py
scripts/qapi/schema.py
tests/qapi-schema/doc-bad-boxed-command-arg.err
tests/qapi-schema/doc-bad-boxed-command-arg.json
tests/qapi-schema/doc-bad-boxed-command-arg.out
tests/qapi-schema/doc-bad-event-arg.err
tests/qapi-schema/doc-bad-event-arg.json
tests/qapi-schema/doc-bad-event-arg.out