]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Warn about statements not found in the grammar
authorPetr Špaček <pspacek@isc.org>
Thu, 12 May 2022 17:33:20 +0000 (19:33 +0200)
committerPetr Špaček <pspacek@isc.org>
Fri, 1 Jul 2022 06:59:23 +0000 (08:59 +0200)
doc/arm/_ext/iscconf.py

index a6ecf212fdd1eb0e434d678d4a4ae2627b6ff81e..f1b4c7e1184eee40a201d37dbc0c6c81076abf32 100644 (file)
@@ -216,12 +216,15 @@ def domain_factory(domainname, domainlabel, todolist, grammar):
                 location=(new["docname"], new["lineno"]),
             )
 
+        def get_statement_name(self, signature):
+            return "{}.{}.{}".format(domainname, "statement", signature)
+
         def add_statement(self, signature, tags, short, lineno):
             """
             Add a new statement to the domain data structures.
             No visible effect.
             """
-            name = "{}.{}.{}".format(domainname, "statement", signature)
+            name = self.get_statement_name(signature)
             anchor = "{}-statement-{}".format(domainname, signature)
 
             new = {
@@ -291,6 +294,18 @@ def domain_factory(domainname, domainlabel, todolist, grammar):
                     domainlabel,
                 )
 
+            extra_statement_sigs = defined_statements.difference(statements_in_grammar)
+            for extra in extra_statement_sigs:
+                fullname = self.get_statement_name(extra)
+                desc = self.data["statements"][fullname]
+                logger.warning(
+                    ".. statement:: %s found but matching definition in %s grammar is"
+                    " missing",
+                    extra,
+                    domainlabel,
+                    location=(desc["docname"], desc["lineno"]),
+                )
+
         @classmethod
         def process_statementlist_nodes(cls, app, doctree, fromdocname):
             """