diff --git a/tools/kconfig_new/kconfiglib.py b/tools/kconfig_new/kconfiglib.py index 929f30d4d..46f845c57 100644 --- a/tools/kconfig_new/kconfiglib.py +++ b/tools/kconfig_new/kconfiglib.py @@ -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): """