[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 31/33] qapi: Simplify error reporting for array types
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL 31/33] qapi: Simplify error reporting for array types |
Date: |
Fri, 4 Sep 2015 16:21:38 +0200 |
check_type() first checks and peels off the array type, then checks
the element type. For two out of four error messages, it takes pains
to report errors for "array of T" instead of just T. Odd. Let's
examine the errors.
* Unknown element type, e.g.
tests/qapi-schema/args-array-unknown.json:
Member 'array' of 'data' for command 'oops' uses unknown type
'array of NoSuchType'
To make sense of this, you need to know that 'array of NoSuchType'
refers to '[NoSuchType]'. Easy enough. However, simply reporting
Member 'array' of 'data' for command 'oops' uses unknown type
'NoSuchType'
is at least as easy to understand.
* Element type's meta-type is inadmissible, e.g.
tests/qapi-schema/returns-whitelist.json:
'returns' for command 'no-way-this-will-get-whitelisted' cannot
use built-in type 'array of int'
'array of int' is technically not a built-in type, but that's
pedantry. However, simply reporting
'returns' for command 'no-way-this-will-get-whitelisted' cannot
use built-in type 'int'
avoids the issue, and is at least as easy to understand.
* The remaining two errors are unreachable, because the array checking
ensures that value is a string.
Thus, reporting some errors for "array of T" instead of just T works,
but doesn't really improve things. Drop it.
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
---
scripts/qapi.py | 6 ++----
tests/qapi-schema/args-array-unknown.err | 2 +-
tests/qapi-schema/returns-whitelist.err | 2 +-
3 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/scripts/qapi.py b/scripts/qapi.py
index 3656059..ac0e45e 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -426,7 +426,6 @@ def check_type(expr_info, source, value, allow_array =
False,
allow_dict = False, allow_optional = False,
allow_star = False, allow_metas = []):
global all_names
- orig_value = value
if value is None:
return
@@ -444,7 +443,6 @@ def check_type(expr_info, source, value, allow_array =
False,
"%s: array type must contain single type name"
% source)
value = value[0]
- orig_value = "array of %s" %value
# Check if type name for value is okay
if isinstance(value, str):
@@ -455,11 +453,11 @@ def check_type(expr_info, source, value, allow_array =
False,
if not value in all_names:
raise QAPIExprError(expr_info,
"%s uses unknown type '%s'"
- % (source, orig_value))
+ % (source, value))
if not all_names[value] in allow_metas:
raise QAPIExprError(expr_info,
"%s cannot use %s type '%s'"
- % (source, all_names[value], orig_value))
+ % (source, all_names[value], value))
return
if not allow_dict:
diff --git a/tests/qapi-schema/args-array-unknown.err
b/tests/qapi-schema/args-array-unknown.err
index 7834d11..cd7a0f9 100644
--- a/tests/qapi-schema/args-array-unknown.err
+++ b/tests/qapi-schema/args-array-unknown.err
@@ -1 +1 @@
-tests/qapi-schema/args-array-unknown.json:2: Member 'array' of 'data' for
command 'oops' uses unknown type 'array of NoSuchType'
+tests/qapi-schema/args-array-unknown.json:2: Member 'array' of 'data' for
command 'oops' uses unknown type 'NoSuchType'
diff --git a/tests/qapi-schema/returns-whitelist.err
b/tests/qapi-schema/returns-whitelist.err
index a41f019..f47c1ee 100644
--- a/tests/qapi-schema/returns-whitelist.err
+++ b/tests/qapi-schema/returns-whitelist.err
@@ -1 +1 @@
-tests/qapi-schema/returns-whitelist.json:10: 'returns' for command
'no-way-this-will-get-whitelisted' cannot use built-in type 'array of int'
+tests/qapi-schema/returns-whitelist.json:10: 'returns' for command
'no-way-this-will-get-whitelisted' cannot use built-in type 'int'
--
2.4.3
- [Qemu-devel] [PULL 30/33] qapi: Fix errors for non-string, non-dictionary members, (continued)
- [Qemu-devel] [PULL 30/33] qapi: Fix errors for non-string, non-dictionary members, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 29/33] tests/qapi-schema: Cover non-string, non-dictionary members, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 24/33] qapi-commands: Don't feed output of mcgen() to mcgen() again, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 28/33] tests/qapi-schema: Cover two more syntax errors, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 19/33] qapi-tests: New tests for union, alternate command arguments, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 09/33] qapi-visit: Fix generated code when schema has forward refs, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 21/33] qapi: Command returning anonymous type doesn't work, outlaw, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 20/33] qapi: Fix to reject union command and event arguments, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 32/33] docs/qapi-code-gen.txt: Fix QAPI schema examples, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 33/33] qapi: Generators crash when --output-dir isn't given, fix, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 31/33] qapi: Simplify error reporting for array types,
Markus Armbruster <=
- [Qemu-devel] [PULL 10/33] qapi-visit: Replace list implicit_structs by set, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 17/33] tests/qapi-schema: Restore test case for flat union base bug, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 26/33] qapi: Generated code cleanup, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 18/33] tests/qapi-schema: Rename tests from data- to args-, Markus Armbruster, 2015/09/04
- Re: [Qemu-devel] [PULL 00/33] qapi: Another round of fixes and cleanups, Peter Maydell, 2015/09/04