summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorMartin Roth <martinroth@google.com>2017-03-24 08:51:51 -0600
committerMartin Roth <martinroth@google.com>2017-03-27 05:53:57 +0200
commitaa206478cbf1aff3ec574f5b91f2f24e96a56fee (patch)
tree5b8898d66720b2a341fdc53ac466ab0cd89a6241 /util
parent5029a1668e0ca99ac64210967e22c971b0395efa (diff)
util/lint: Show an error if a symbol is created in two choice blocks
Kconfig shows a warning about this, but we want to catch it earlier and halt the build. Change-Id: I0acce1d40a6ca2b212c638bdb1ec65de5bd4d726 Signed-off-by: Martin Roth <martinroth@google.com> Reviewed-on: https://review.coreboot.org/18970 Tested-by: build bot (Jenkins) Reviewed-by: Subrata Banik <subrata.banik@intel.com> Reviewed-by: Patrick Georgi <pgeorgi@google.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'util')
-rwxr-xr-xutil/lint/kconfig_lint4
-rw-r--r--util/lint/kconfig_lint_README3
2 files changed, 6 insertions, 1 deletions
diff --git a/util/lint/kconfig_lint b/util/lint/kconfig_lint
index bbf3e38142..c9ccfb970e 100755
--- a/util/lint/kconfig_lint
+++ b/util/lint/kconfig_lint
@@ -788,6 +788,10 @@ sub add_symbol {
show_error( "$symbol entry at $filename:$line_no has already been created outside a choice block "
. "at $symbols{$symbol}{0}{file}:$symbols{$symbol}{0}{line_no}." );
}
+ elsif ( $inside_choice && $symbols{$symbol}{choice} ) {
+ show_error( "$symbol entry at $filename:$line_no has already been created inside another choice block "
+ . "at $symbols{$symbol}{0}{file}:$symbols{$symbol}{0}{line_no}." );
+ }
}
# add the location of this instance
diff --git a/util/lint/kconfig_lint_README b/util/lint/kconfig_lint_README
index c36320edb2..5bd2bdd2c1 100644
--- a/util/lint/kconfig_lint_README
+++ b/util/lint/kconfig_lint_README
@@ -68,7 +68,8 @@ Errors in Kconfig files:
- Choice block defined with no symbols.
- The 'tristate' type is not used in coreboot.
- A 'select' keyword used outside of a config block.
-- Symbols created both inside and outside of a choice block.
+- Symbols created both inside and outside of a choice block or in two
+ different choice blocks.
- A 'range' keyword has higher minimum than maximum value.
- A config block with a prompt at the top level (the top level is currently
just for menus).