From dbd9c59a4de57089de9f39d38e451ce8e6a869ba Mon Sep 17 00:00:00 2001 From: Ulf Magnusson Date: Sat, 25 Aug 2018 04:23:16 +0200 Subject: Simplify _check_undefined_syms() with node_iter() Wasn't available when the original version was written. Also rename _check_undefined_syms() to _check_undef_syms(). That shortening is used elsewhere. --- kconfiglib.py | 36 ++++++++---------------------------- 1 file changed, 8 insertions(+), 28 deletions(-) (limited to 'kconfiglib.py') diff --git a/kconfiglib.py b/kconfiglib.py index 3a25c73..3b59363 100644 --- a/kconfiglib.py +++ b/kconfiglib.py @@ -810,7 +810,7 @@ class Kconfig(object): _check_choice_sanity(choice) if os.environ.get("KCONFIG_STRICT") == "y": - self._check_undefined_syms() + self._check_undef_syms() # Build Symbol._dependents for all symbols and choices @@ -3060,7 +3060,7 @@ class Kconfig(object): return open(filename, "rU" if mode == "r" else mode) if _IS_PY2 else \ open(filename, mode, encoding=self._encoding) - def _check_undefined_syms(self): + def _check_undef_syms(self): # Prints warnings for all references to undefined symbols within the # Kconfig files @@ -3075,34 +3075,14 @@ class Kconfig(object): if not sym.nodes and not _is_num(sym.name) and \ sym.name != "MODULES": - self._warn_undefined_sym(sym) + msg = "undefined symbol {}:".format(sym.name) - def _warn_undefined_sym(self, sym): - # _check_undefined_syms() helper. Generates a warning that lists the - # locations where the undefined symbol 'sym' is referenced, including - # the referencing menu nodes in Kconfig format. + for node in self.node_iter(): + if sym in node.referenced: + msg += "\n\n- Referenced at {}:{}:\n\n{}" \ + .format(node.filename, node.linenr, node) - referencing_nodes = [] - - def find_refs(node): - while node: - if sym in node.referenced: - referencing_nodes.append(node) - - if node.list: - find_refs(node.list) - - node = node.next - - find_refs(self.top_node) - - msg = "undefined symbol {}:".format(sym.name) - - for node in referencing_nodes: - msg += "\n\n- Referenced at {}:{}:\n\n{}" \ - .format(node.filename, node.linenr, node) - - self._warn(msg) + self._warn(msg) def _warn(self, msg, filename=None, linenr=None): # For printing general warnings -- cgit v1.2.3