On 07/01/2015 02:22 PM, Markus Armbruster wrote: > A command's 'data' must be a struct type, given either as a > dictionary, or as struct type name. > > Commit dd883c6 tightened the checking there, but not enough: we still > accept 'union'. Fix to reject it. I was thinking that 'all dictionaries are okay' when I wrote that commit, and obviously missed thinking about 'how would we translate unions into a C prototype'. > > We may want to support union types there, but we'll have to extend > qapi-commands.py for it. > > Signed-off-by: Markus Armbruster > --- > scripts/qapi.py | 2 +- > tests/qapi-schema/args-union.err | 1 + > tests/qapi-schema/args-union.exit | 2 +- > tests/qapi-schema/args-union.json | 2 +- > tests/qapi-schema/args-union.out | 4 ---- > 5 files changed, 4 insertions(+), 7 deletions(-) Reviewed-by: Eric Blake > > diff --git a/scripts/qapi.py b/scripts/qapi.py > index 99e04f6..bebaecc 100644 > --- a/scripts/qapi.py > +++ b/scripts/qapi.py > @@ -495,7 +495,7 @@ def check_command(expr, expr_info): > > check_type(expr_info, "'data' for command '%s'" % name, > expr.get('data'), allow_dict=True, allow_optional=True, > - allow_metas=['union', 'struct'], allow_star=allow_star) > + allow_metas=['struct'], allow_star=allow_star) I'm still quite pleased at how my earlier work made this a one-liner fix - the check_type() interface turned out to be rather pleasant. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org