diff options
author | Markus Armbruster <armbru@redhat.com> | 2015-07-31 17:59:38 +0200 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2015-09-04 15:47:15 +0200 |
commit | 9b090d42aea9a0abbf39a1d75561a186057b5fe6 (patch) | |
tree | 9fa2bdfb3d85525635e51d60110bdbeee8419bc6 /scripts/qapi.py | |
parent | 315932b5edb86597adafbd1faa2d29c46499d8c3 (diff) | |
download | qemu-9b090d42aea9a0abbf39a1d75561a186057b5fe6.zip qemu-9b090d42aea9a0abbf39a1d75561a186057b5fe6.tar.gz qemu-9b090d42aea9a0abbf39a1d75561a186057b5fe6.tar.bz2 |
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>
Diffstat (limited to 'scripts/qapi.py')
-rw-r--r-- | scripts/qapi.py | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/scripts/qapi.py b/scripts/qapi.py index bbeae4d..23c32fe 100644 --- a/scripts/qapi.py +++ b/scripts/qapi.py @@ -504,7 +504,7 @@ def check_command(expr, expr_info): if name in returns_whitelist: returns_meta += ['built-in', 'alternate', 'enum'] check_type(expr_info, "'returns' for command '%s'" % name, - expr.get('returns'), allow_array=True, allow_dict=True, + expr.get('returns'), allow_array=True, allow_optional=True, allow_metas=returns_meta, allow_star=allow_star) |