All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: marcandre.lureau@redhat.com, eblake@redhat.com,
	mdroth@linux.vnet.ibm.com
Subject: [Qemu-devel] [PATCH v2 for-2.9 32/47] qapi: Move detection of doc / expression name mismatch
Date: Wed, 15 Mar 2017 13:57:21 +0100	[thread overview]
Message-ID: <1489582656-31133-33-git-send-email-armbru@redhat.com> (raw)
In-Reply-To: <1489582656-31133-1-git-send-email-armbru@redhat.com>

Move the check whether the doc matches the expression name from
check_definition_doc() to check_exprs().  This changes the error
location from the comment to the expression.  Makes sense as the
message talks about the expression: "Definition of '%s' follows
documentation for '%s'".  It's also a step towards getting rid of
check_docs().

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
---
 scripts/qapi.py                      | 28 ++++++++++++++++++----------
 tests/qapi-schema/doc-bad-symbol.err |  2 +-
 2 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 37f2814..9a1d830 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -894,40 +894,52 @@ def check_keys(expr_elem, meta, required, optional=[]):
 def check_exprs(exprs):
     global all_names
 
-    # Learn the types and check for valid expression keys
+    # Populate name table with names of built-in types
     for builtin in builtin_types.keys():
         all_names[builtin] = 'built-in'
+
+    # Learn the types and check for valid expression keys
     for expr_elem in exprs:
         expr = expr_elem['expr']
         info = expr_elem['info']
+        doc = expr_elem.get('doc')
 
-        if 'doc' not in expr_elem and doc_required:
+        if not doc and doc_required:
             raise QAPISemError(info,
                                "Expression missing documentation comment")
 
         if 'enum' in expr:
+            name = expr['enum']
             check_keys(expr_elem, 'enum', ['data'], ['prefix'])
-            add_enum(expr['enum'], info, expr['data'])
+            add_enum(name, info, expr['data'])
         elif 'union' in expr:
+            name = expr['union']
             check_keys(expr_elem, 'union', ['data'],
                        ['base', 'discriminator'])
             add_union(expr, info)
         elif 'alternate' in expr:
+            name = expr['alternate']
             check_keys(expr_elem, 'alternate', ['data'])
-            add_name(expr['alternate'], info, 'alternate')
+            add_name(name, info, 'alternate')
         elif 'struct' in expr:
+            name = expr['struct']
             check_keys(expr_elem, 'struct', ['data'], ['base'])
             add_struct(expr, info)
         elif 'command' in expr:
+            name = expr['command']
             check_keys(expr_elem, 'command', [],
                        ['data', 'returns', 'gen', 'success-response', 'boxed'])
-            add_name(expr['command'], info, 'command')
+            add_name(name, info, 'command')
         elif 'event' in expr:
+            name = expr['event']
             check_keys(expr_elem, 'event', [], ['data', 'boxed'])
-            add_name(expr['event'], info, 'event')
+            add_name(name, info, 'event')
         else:
             raise QAPISemError(expr_elem['info'],
                                "Expression is missing metatype")
+        if doc and doc.symbol != name:
+            raise QAPISemError(info, "Definition of '%s' follows documentation"
+                               " for '%s'" % (name, doc.symbol))
 
     # Try again for hidden UnionKind enum
     for expr_elem in exprs:
@@ -977,10 +989,6 @@ def check_definition_doc(doc, expr, info):
             meta = i
             break
 
-    name = expr[meta]
-    if doc.symbol != name:
-        raise QAPISemError(info, "Definition of '%s' follows documentation"
-                           " for '%s'" % (name, doc.symbol))
     if doc.has_section('Returns') and 'command' not in expr:
         raise QAPISemError(info, "'Returns:' is only valid for commands")
 
diff --git a/tests/qapi-schema/doc-bad-symbol.err b/tests/qapi-schema/doc-bad-symbol.err
index ac4e566..8472030 100644
--- a/tests/qapi-schema/doc-bad-symbol.err
+++ b/tests/qapi-schema/doc-bad-symbol.err
@@ -1 +1 @@
-tests/qapi-schema/doc-bad-symbol.json:3: Definition of 'foo' follows documentation for 'food'
+tests/qapi-schema/doc-bad-symbol.json:6: Definition of 'foo' follows documentation for 'food'
-- 
2.7.4

  parent reply	other threads:[~2017-03-15 12:57 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-15 12:56 [Qemu-devel] [PATCH v2 for-2.9 00/47] qapi: Put type information back into QMP documentation Markus Armbruster
2017-03-15 12:56 ` [Qemu-devel] [PATCH v2 for-2.9 01/47] qapi: Factor QAPISchemaParser._include() out of .__init__() Markus Armbruster
2017-03-15 12:56 ` [Qemu-devel] [PATCH v2 for-2.9 02/47] qapi: Make doc comments optional where we don't need them Markus Armbruster
2017-03-15 14:25   ` Eric Blake
2017-03-15 15:13     ` Markus Armbruster
2017-03-15 15:19       ` Eric Blake
2017-03-15 12:56 ` [Qemu-devel] [PATCH v2 for-2.9 03/47] qapi: Back out doc comments added just to please qapi.py Markus Armbruster
2017-03-15 12:56 ` [Qemu-devel] [PATCH v2 for-2.9 04/47] docs/qapi-code-gen.txt: Drop confusing reference to 'gen' Markus Armbruster
2017-03-15 12:56 ` [Qemu-devel] [PATCH v2 for-2.9 05/47] qapi: Have each QAPI schema declare its returns white-list Markus Armbruster
2017-03-15 14:33   ` Eric Blake
2017-03-15 12:56 ` [Qemu-devel] [PATCH v2 for-2.9 06/47] qapi: Have each QAPI schema declare its name rule violations Markus Armbruster
2017-03-15 14:53   ` Eric Blake
2017-03-15 12:56 ` [Qemu-devel] [PATCH v2 for-2.9 07/47] qapi: Clean up build of generated documentation Markus Armbruster
2017-03-15 12:56 ` [Qemu-devel] [PATCH v2 for-2.9 08/47] tests/qapi-schema: Cover empty union base Markus Armbruster
2017-03-15 12:56 ` [Qemu-devel] [PATCH v2 for-2.9 09/47] qapi: Fix to reject empty union base gracefully Markus Armbruster
2017-03-15 12:56 ` [Qemu-devel] [PATCH v2 for-2.9 10/47] qapi2texi: Fix up output around #optional Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 11/47] qapi: Avoid unwanted blank lines in QAPIDoc Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 12/47] qapi/rocker: Fix up doc comment notes on optional members Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 13/47] qapi: Fix QAPISchemaEnumType.is_implicit() for 'QType' Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 14/47] qapi: Prepare for requiring more complete documentation Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 15/47] qapi: Conjure up QAPIDoc.ArgSection for undocumented members Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 16/47] qapi2texi: Convert to QAPISchemaVisitor Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 17/47] qapi: The #optional tag is redundant, drop Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 18/47] qapi: Use raw strings for regular expressions consistently Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 19/47] qapi: Prefer single-quoted strings more consistently Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 20/47] qapi2texi: Plainer enum value and member name formatting Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 21/47] qapi2texi: Present the table of members more clearly Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 22/47] qapi2texi: Explain enum value undocumentedness " Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 23/47] qapi2texi: Don't hide undocumented members and arguments Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 24/47] qapi2texi: Implement boxed argument documentation Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 25/47] qapi2texi: Include member type in generated documentation Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 26/47] qapi2texi: Generate reference to base type members Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 27/47] qapi2texi: Generate documentation for variant members Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 28/47] qapi2texi: Generate descriptions for simple union tags Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 29/47] qapi2texi: Use category "Object" for all object types Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 30/47] tests/qapi-schema: Improve doc / expression mismatch coverage Markus Armbruster
2017-03-15 14:59   ` Eric Blake
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 31/47] qapi: Fix detection of doc / expression mismatch Markus Armbruster
2017-03-15 15:01   ` Eric Blake
2017-03-15 12:57 ` Markus Armbruster [this message]
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 33/47] qapi: Improve error message on @NAME: in free-form doc Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 34/47] qapi: Move empty doc section checking to doc parser Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 35/47] tests/qapi-schema: Rename doc-bad-args to doc-bad-command-arg Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 36/47] tests/qapi-schema: Improve coverage of bogus member docs Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 37/47] qapi: Fix detection of bogus member documentation Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 38/47] qapi: Eliminate check_docs() and drop QAPIDoc.expr Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 39/47] qapi: Drop unused variable events Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 40/47] qapi: Simplify what gets stored in enum_types Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 41/47] qapi: Factor add_name() calls out of the meta conditional Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 42/47] qapi: enum_types is a list used like a dict, make it one Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 43/47] qapi: struct_types " Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 44/47] qapi: union_types " Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 45/47] qapi: Drop unused .check_clash() parameter schema Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 46/47] qapi: Make pylint a bit happier Markus Armbruster
2017-03-15 12:57 ` [Qemu-devel] [PATCH v2 for-2.9 47/47] qapi: Fix a misleading parser error message Markus Armbruster

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=1489582656-31133-33-git-send-email-armbru@redhat.com \
    --to=armbru@redhat.com \
    --cc=eblake@redhat.com \
    --cc=marcandre.lureau@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.