diff options
| author | Ulf Magnusson <ulfalizer@gmail.com> | 2018-01-15 13:44:03 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-01-15 13:44:03 +0100 |
| commit | 401cd3c06af8f2812671aef157894d841c28726d (patch) | |
| tree | 5580ef57db28ef4ad508d19e836d17755f21b95b | |
| parent | 0ae6a04dc3e1c799ae7bd2aa6df63e30309fef36 (diff) | |
| parent | 94c63de77c7a3422347e59e168b05174d0b9e84d (diff) | |
Merge pull request #36 from SebastianBoe/support_disabling_redundant_warnings
Support disabling warnings for redundant assignments
| -rw-r--r-- | kconfiglib.py | 35 | ||||
| -rw-r--r-- | testsuite.py | 7 |
2 files changed, 36 insertions, 6 deletions
diff --git a/kconfiglib.py b/kconfiglib.py index 261dc93..d91c27c 100644 --- a/kconfiglib.py +++ b/kconfiglib.py @@ -486,6 +486,7 @@ class Kconfig(object): __slots__ = ( "_choices", "_print_undef_assign", + "_print_redun_assign", "_print_warnings", "_set_re_match", "_unset_re_match", @@ -561,6 +562,7 @@ class Kconfig(object): self._print_warnings = warn self._print_undef_assign = False + self._print_redun_assign = True self.syms = {} self.const_syms = {} @@ -808,10 +810,14 @@ 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) + warn_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(warn_msg, filename, linenr) + else: + self._warn( warn_msg, filename, linenr) sym.set_value(val) @@ -1032,6 +1038,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 @@ -1046,6 +1065,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") ))) # @@ -2122,6 +2143,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): """ diff --git a/testsuite.py b/testsuite.py index 62a06ab..2f00e2f 100644 --- a/testsuite.py +++ b/testsuite.py @@ -676,7 +676,7 @@ choice print("Testing Kconfig.__repr__()") verify_repr(c, """ -<configuration with 15 symbols, main menu prompt "Linux Kernel Configuration", srctree not set, config symbol prefix "CONFIG_", warnings disabled, undef. symbol assignment warnings disabled> +<configuration with 15 symbols, main menu prompt "Linux Kernel Configuration", srctree not set, config symbol prefix "CONFIG_", warnings disabled, undef. symbol assignment warnings disabled, redundant symbol assignment warnings enabled> """) os.environ["srctree"] = "srctree value" @@ -684,10 +684,11 @@ choice c = Kconfig("Kconfiglib/tests/Krepr", warn=False) c.enable_warnings() + c.disable_redun_warnings() c.enable_undef_warnings() verify_repr(c, """ -<configuration with 15 symbols, main menu prompt "Linux Kernel Configuration", srctree "srctree value", config symbol prefix "CONFIG_ value", warnings enabled, undef. symbol assignment warnings enabled> +<configuration with 15 symbols, main menu prompt "Linux Kernel Configuration", srctree "srctree value", config symbol prefix "CONFIG_ value", warnings enabled, undef. symbol assignment warnings enabled, redundant symbol assignment warnings disabled> """) os.environ.pop("srctree", None) @@ -1816,6 +1817,8 @@ def test_sanity(conf, arch): conf.modules conf.defconfig_list conf.defconfig_filename + conf.enable_redun_warnings() + conf.disable_redun_warnings() conf.enable_undef_warnings() conf.disable_undef_warnings() conf.enable_warnings() |
