qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: mdroth@linux.vnet.ibm.com
Subject: [Qemu-devel] [PATCH 31/31] qapi: Simplify error reporting for array types
Date: Mon, 31 Aug 2015 17:55:33 +0200	[thread overview]
Message-ID: <1441036533-26113-5-git-send-email-armbru@redhat.com> (raw)
In-Reply-To: <1441036533-26113-1-git-send-email-armbru@redhat.com>
In-Reply-To: <1440780366-7177-1-git-send-email-armbru@redhat.com>

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 dosn't really improve things.  Drop it.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 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

  parent reply	other threads:[~2015-08-31 15:55 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-28 16:45 [Qemu-devel] [PATCH v2 00/26] qapi: Another round of fixes and cleanups Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 01/26] qapi: Clarify docs on including the same file multiple times Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 02/26] qapi: Clean up cgen() and mcgen() Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 03/26] qapi: Simplify guardname() Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 04/26] qapi-event: Clean up how name of enum QAPIEvent is made Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 05/26] qapi: Reject -p arguments that break qapi-event.py Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 06/26] qapi: Drop unused and useless parameters and variables Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 07/26] qapi: Fix generated code when flat union has member 'kind' Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 08/26] qapi: Generate a nicer struct for flat unions Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 09/26] qapi-visit: Fix generated code when schema has forward refs Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 10/26] qapi-visit: Replace list implicit_structs by set Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 11/26] qapi-visit: Fix two name arguments passed to visitors Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 12/26] tests/qapi-schema: Document alternate's enum lacks visit function Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 13/26] tests/qapi-schema: Document events with base don't work Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 14/26] qapi: Document that input visitor semantics are prone to leaks Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 15/26] qapi: Document shortcoming with union 'data' branch Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 16/26] qapi: Document flaws in checking of names Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 17/26] tests/qapi-schema: Restore test case for flat union base bug Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 18/26] tests/qapi-schema: Rename tests from data- to args- Markus Armbruster
2015-08-28 16:45 ` [Qemu-devel] [PATCH v2 19/26] qapi-tests: New tests for union, alternate command arguments Markus Armbruster
2015-08-28 16:46 ` [Qemu-devel] [PATCH v2 20/26] qapi: Fix to reject union command and event arguments Markus Armbruster
2015-08-28 16:46 ` [Qemu-devel] [PATCH v2 21/26] qapi: Command returning anonymous type doesn't work, outlaw Markus Armbruster
2015-08-28 16:46 ` [Qemu-devel] [PATCH v2 22/26] qapi-commands: Fix gen_err_check(e) for e and e != 'local_err' Markus Armbruster
2015-08-28 16:46 ` [Qemu-devel] [PATCH v2 23/26] qapi-commands: Inline gen_marshal_output_call() Markus Armbruster
2015-08-28 16:46 ` [Qemu-devel] [PATCH v2 24/26] qapi-commands: Don't feed output of mcgen() to mcgen() again Markus Armbruster
2015-08-28 16:46 ` [Qemu-devel] [PATCH v2 25/26] qapi-commands: Drop useless initialization Markus Armbruster
2015-08-28 16:46 ` [Qemu-devel] [PATCH v2 26/26] qapi: Generated code cleanup Markus Armbruster
2015-08-31 15:55 ` [Qemu-devel] [PATCH 27/31] qapi: Drop one of two "simple union must not have base" checks Markus Armbruster
2015-08-31 16:05   ` Eric Blake
2015-08-31 15:55 ` [Qemu-devel] [PATCH 28/31] tests/qapi-schema: Cover two more syntax errors Markus Armbruster
2015-08-31 16:09   ` Eric Blake
2015-08-31 15:55 ` [Qemu-devel] [PATCH 29/31] tests/qapi-schema: Cover non-string, non-dictionary members Markus Armbruster
2015-08-31 16:13   ` Eric Blake
2015-08-31 15:55 ` [Qemu-devel] [PATCH 30/31] qapi: Fix errors for " Markus Armbruster
2015-08-31 16:19   ` Eric Blake
2015-08-31 15:55 ` Markus Armbruster [this message]
2015-08-31 16:28   ` [Qemu-devel] [PATCH 31/31] qapi: Simplify error reporting for array types Eric Blake
2015-08-31 16:28 ` [Qemu-devel] [PATCH v2 00/26] qapi: Another round of fixes and cleanups Markus Armbruster
2015-09-03  9:59   ` Markus Armbruster
2015-09-03  9:55 ` [Qemu-devel] [PATCH 32/33] docs/qapi-code-gen.txt: Fix QAPI schema examples Markus Armbruster
2015-09-03 14:32   ` Eric Blake
2015-09-03  9:55 ` [Qemu-devel] [PATCH 33/33] qapi: Generators crash when --output-dir isn't given, fix Markus Armbruster
2015-09-03 14:32   ` Eric Blake

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1441036533-26113-5-git-send-email-armbru@redhat.com \
    --to=armbru@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).