OSDN Git Service

qapi: Reject section markup in definition documentation
authorMarkus Armbruster <armbru@redhat.com>
Fri, 20 Mar 2020 09:18:04 +0000 (10:18 +0100)
committerMarkus Armbruster <armbru@redhat.com>
Mon, 7 Sep 2020 14:35:16 +0000 (16:35 +0200)
Section markup in definition documentation makes no sense and can
produce invalid Texinfo.  Reject.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20200320091805.5585-2-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
docs/devel/qapi-code-gen.txt
scripts/qapi/parser.py
tests/qapi-schema/doc-bad-section.err
tests/qapi-schema/doc-bad-section.json
tests/qapi-schema/doc-bad-section.out

index f3e7ced..9eede44 100644 (file)
@@ -835,6 +835,8 @@ Double the '=' for a subsection title:
 
     # == Subsection title
 
+Both are only permitted in free-form documentation.
+
 '|' denotes examples:
 
     # | Text of the example, may span
index abadacb..f12c67d 100644 (file)
@@ -282,6 +282,11 @@ class QAPISchemaParser:
                 doc.end_comment()
                 self.accept()
                 return doc
+            if self.val.startswith('# ='):
+                if doc.symbol:
+                    raise QAPIParseError(
+                        self,
+                        "unexpected '=' markup in definition documentation")
             doc.append(self.val)
             self.accept(False)
 
index e69de29..785cacc 100644 (file)
@@ -0,0 +1 @@
+doc-bad-section.json:5:1: unexpected '=' markup in definition documentation
index 560df4b..8175d95 100644 (file)
@@ -1,9 +1,8 @@
 # = section within an expression comment
-# BUG: not rejected
 
 ##
 # @Enum:
-# == Produces *invalid* texinfo
+# == No good here
 # @one: The _one_ {and only}
 #
 # @two is undocumented
index 367e2a1..e69de29 100644 (file)
@@ -1,24 +0,0 @@
-module None
-object q_empty
-enum QType
-    prefix QTYPE
-    member none
-    member qnull
-    member qnum
-    member qstring
-    member qdict
-    member qlist
-    member qbool
-module doc-bad-section.json
-enum Enum
-    member one
-    member two
-doc symbol=Enum
-    body=
-== Produces *invalid* texinfo
-    arg=one
-The _one_ {and only}
-    arg=two
-
-    section=None
-@two is undocumented