qapi: Command returning anonymous type doesn't work, outlaw
commit9b090d42aea9a0abbf39a1d75561a186057b5fe6
authorMarkus Armbruster <armbru@redhat.com>
Fri, 31 Jul 2015 15:59:38 +0000 (31 17:59 +0200)
committerMarkus Armbruster <armbru@redhat.com>
Fri, 4 Sep 2015 13:47:15 +0000 (4 15:47 +0200)
tree9fa2bdfb3d85525635e51d60110bdbeee8419bc6
parent315932b5edb86597adafbd1faa2d29c46499d8c3
qapi: Command returning anonymous type doesn't work, outlaw

Reproducer: with

    { 'command': 'user_def_cmd4', 'returns': { 'a': 'int' } }

added to qapi-schema-test.json, qapi-commands.py dies when it tries to
generate the command handler function

    Traceback (most recent call last):
      File "/work/armbru/qemu/scripts/qapi-commands.py", line 359, in <module>
        ret = generate_command_decl(cmd['command'], arglist, ret_type) + "\n"
      File "/work/armbru/qemu/scripts/qapi-commands.py", line 29, in generate_command_decl
        ret_type=c_type(ret_type), name=c_name(name),
      File "/work/armbru/qemu/scripts/qapi.py", line 927, in c_type
        assert isinstance(value, str) and value != ""
    AssertionError

because the return type doesn't exist.

Simply outlaw this usage, and drop or dumb down test cases accordingly.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
docs/qapi-code-gen.txt
scripts/qapi.py
tests/Makefile
tests/qapi-schema/command-int.json
tests/qapi-schema/nested-struct-data.json
tests/qapi-schema/nested-struct-returns.err [deleted file]
tests/qapi-schema/nested-struct-returns.json [deleted file]
tests/qapi-schema/returns-dict.err [new file with mode: 0644]
tests/qapi-schema/returns-dict.exit [moved from tests/qapi-schema/nested-struct-returns.exit with 100% similarity]
tests/qapi-schema/returns-dict.json [new file with mode: 0644]
tests/qapi-schema/returns-dict.out [moved from tests/qapi-schema/nested-struct-returns.out with 100% similarity]