[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 06/14] qapi: require valid expressions
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v3 06/14] qapi: require valid expressions |
Date: |
Thu, 14 Aug 2014 11:38:18 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Eric Blake <address@hidden> writes:
> The previous patch demonstrated that the generator could get
> confused if an expression had conflicting meta-types, and
> silently ignored expressions that lacked a known meta-type.
> Fix both cases to give a sane error message.
>
> * scripts/qapi.py (check_exprs): Require a valid meta-type for
> every expression.
> * tests/qapi-schema/indented-expr.*: Use valid types.
> * tests/qapi-schema/missing-type.*: Update expected output.
> * tests/qapi-schema/double-type.*: Likewise.
Conventional git commit message followed by GNU change log. Unusual in
QEMU. Same elsewhere.
Explanation of the change to indented-expr.json hides in the change log
part, where I promptly missed it :)
> Signed-off-by: Eric Blake <address@hidden>
> ---
> scripts/qapi.py | 12 ++++++++++++
> tests/qapi-schema/double-type.err | 1 +
> tests/qapi-schema/double-type.exit | 2 +-
> tests/qapi-schema/double-type.out | 3 ---
> tests/qapi-schema/indented-expr.json | 4 ++--
> tests/qapi-schema/indented-expr.out | 2 +-
> tests/qapi-schema/missing-type.err | 1 +
> tests/qapi-schema/missing-type.exit | 2 +-
> tests/qapi-schema/missing-type.out | 3 ---
> 9 files changed, 19 insertions(+), 11 deletions(-)
>
> diff --git a/scripts/qapi.py b/scripts/qapi.py
> index 1082416..910e422 100644
> --- a/scripts/qapi.py
> +++ b/scripts/qapi.py
> @@ -322,6 +322,18 @@ def check_exprs(schema):
> info = expr_elem['info']
> members = expr.get('data')
>
> + # 'include' has already been flattened; at this point, all exprs
> + # should have one of the remaining keys
> + keys = (expr.has_key('enum') + expr.has_key('union') +
> + expr.has_key('type') + expr.has_key('command') +
> + expr.has_key('event'))
> + if keys < 1:
> + raise QAPIExprError(info,
> + "Missing expression meta-type")
> + if keys > 1:
> + raise QAPIExprError(info,
> + "Conflicting expression meta-types")
> +
> if expr.has_key('union'):
> check_union(expr, info)
> if expr.has_key('event'):
Not the friendliest error messages, but they'll do.
- [Qemu-devel] [PATCH v3 00/14] drop qapi nested structs, Eric Blake, 2014/08/05
- [Qemu-devel] [PATCH v3 04/14] qapi: better error message for bad enum, Eric Blake, 2014/08/05
- [Qemu-devel] [PATCH v3 03/14] qapi: add some enum tests, Eric Blake, 2014/08/05
- [Qemu-devel] [PATCH v3 06/14] qapi: require valid expressions, Eric Blake, 2014/08/05
- Re: [Qemu-devel] [PATCH v3 06/14] qapi: require valid expressions,
Markus Armbruster <=
- [Qemu-devel] [PATCH v3 08/14] qapi: add expr_name() helper, Eric Blake, 2014/08/05
- [Qemu-devel] [PATCH v3 01/14] qapi: consistent whitespace in tests/Makefile, Eric Blake, 2014/08/05
- [Qemu-devel] [PATCH v3 09/14] qapi: add check_type helper function, Eric Blake, 2014/08/05
- [Qemu-devel] [PATCH v3 05/14] qapi: add some expr tests, Eric Blake, 2014/08/05
- [Qemu-devel] [PATCH v3 02/14] qapi: ignore files created during make check, Eric Blake, 2014/08/05