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 <arm...@redhat.com>
> ---
>  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 <ebl...@redhat.com>

> 
> 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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to