One little thing...

Marc-André Lureau <marcandre.lur...@redhat.com> writes:

> Desugar the enum NAME form to { 'name': NAME }. This will allow to add
> new enum members, such as 'if' in the following patch.
>
> Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
> ---
[...]
> diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py
> index f205805751..bb928d2f7d 100644
> --- a/scripts/qapi/common.py
> +++ b/scripts/qapi/common.py
[...]
> @@ -847,19 +851,29 @@ def check_alternate(expr, info):
>              types_seen[qt] = key
>  
>  
> +def normalize_enum(expr):
> +    if isinstance(expr['data'], list):
> +        expr['data'] = [m if isinstance(m, dict) else {'name': m}
> +                        for m in expr['data']]
> +
> +
>  def check_enum(expr, info):
>      name = expr['enum']
> -    members = expr.get('data')
> +    members = expr['data']
>      prefix = expr.get('prefix')
>  
> -    if not isinstance(members, list):
> -        raise QAPISemError(info,
> -                           "Enum '%s' requires an array for 'data'" % name)
>      if prefix is not None and not isinstance(prefix, str):
>          raise QAPISemError(info,
>                             "Enum '%s' requires a string for 'prefix'" % name)
> +
> +    if not isinstance(members, list):
> +        raise QAPISemError(info,
> +                           "Enum '%s' requires an array for 'data'" % name)
> +

The move of the "requires an array" check looks accidental.  I'll back
it out unless you tell me it's needed.

>      for member in members:
> -        check_name(info, "Member of enum '%s'" % name, member,
> +        source = "dictionary member of enum '%s'" % name
> +        check_known_keys(info, source, member, ['name'], [])
> +        check_name(info, "Member of enum '%s'" % name, member['name'],
>                     enum_member=True)
>  
>  
[...]

Reply via email to