From 4c53d6f9063b8b9a5343f54af0e3ff0bf33d6ec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C5=A0pa=C4=8Dek?= Date: Thu, 12 May 2022 19:33:20 +0200 Subject: [PATCH] Warn about statements not found in the grammar (cherry picked from commit ebe6ede2ec7982aa7346bf9369a4be87b6b6c764) --- doc/arm/_ext/iscconf.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/doc/arm/_ext/iscconf.py b/doc/arm/_ext/iscconf.py index a6ecf212fd..f1b4c7e118 100644 --- a/doc/arm/_ext/iscconf.py +++ b/doc/arm/_ext/iscconf.py @@ -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): """