]> granicus.if.org Git - esp-idf/commitdiff
kconfiglib: allow disabling of redundant definition warnings
authorRenz Christian Bagaporo <renz@espressif.com>
Fri, 25 Jan 2019 09:42:25 +0000 (17:42 +0800)
committerRenz Christian Bagaporo <renz@espressif.com>
Fri, 25 Jan 2019 10:49:55 +0000 (18:49 +0800)
Patches ESP-IDF copy of kconfiglib.py with modifications in commit
94c63de77c7a3422347e59e168b05174d0b9e84d from kconfiglib repository.

tools/kconfig_new/kconfiglib.py

index 929f30d4db3db7dfb8aad39e36c719cc53dd848f..46f845c5778c5be74aae29a2f44bc04039be61ac 100644 (file)
@@ -500,6 +500,7 @@ class Kconfig(object):
     __slots__ = (
         "_choices",
         "_print_undef_assign",
+        "_print_redun_assign",
         "_print_warnings",
         "_set_re_match",
         "_unset_re_match",
@@ -575,6 +576,7 @@ class Kconfig(object):
 
         self._print_warnings = warn
         self._print_undef_assign = False
+        self._print_redun_assign = True
 
         self.syms = {}
         self.const_syms = {}
@@ -826,10 +828,12 @@ class Kconfig(object):
                         display_val = val
                         display_user_val = sym.user_value
 
-                    self._warn('{} set more than once. Old value: "{}", new '
-                               'value: "{}".'
-                               .format(name, display_user_val, display_val),
-                               filename, linenr)
+                    msg = '{} set more than once. Old value: "{}", new value: "{}".'.format(name, display_user_val, display_val)
+
+                    if display_user_val == display_val:
+                        self._warn_redun_assign(msg, filename, linenr)
+                    else:
+                        self._warn(msg, filename, linenr)
 
                 sym.set_value(val)
 
@@ -1057,6 +1061,19 @@ class Kconfig(object):
         """
         self._print_undef_assign = False
 
+    def enable_redun_warnings(self):
+        """
+        Enables warnings for redundant assignments to symbols. Printed to
+        stderr. Enabled by default.
+        """
+        self._print_redun_assign = True
+
+    def disable_redun_warnings(self):
+        """
+        See enable_redun_warnings().
+        """
+        self._print_redun_assign = False
+
     def __repr__(self):
         """
         Returns a string with information about the Kconfig object when it is
@@ -1071,6 +1088,8 @@ class Kconfig(object):
             "warnings " + ("enabled" if self._print_warnings else "disabled"),
             "undef. symbol assignment warnings " +
                 ("enabled" if self._print_undef_assign else "disabled"),
+            "redundant symbol assignment warnings " +
+                ("enabled" if self._print_redun_assign else "disabled")
         )))
 
     #
@@ -2150,6 +2169,12 @@ class Kconfig(object):
             'attempt to assign the value "{}" to the undefined symbol {}' \
             .format(val, name), filename, linenr)
 
+    def _warn_redun_assign(self, msg, filename=None, linenr=None):
+        """
+        See the class documentation.
+        """
+        if self._print_redun_assign:
+            _stderr_msg("warning: " + msg, filename, linenr)
 
 class Symbol(object):
     """