From b6acc3071fa1a488e845cb2d5625a44ff385c272 Mon Sep 17 00:00:00 2001 From: Martin Roth Date: Fri, 27 Nov 2015 18:51:19 -0700 Subject: kconfig_lint: Fix check_is_enabled for 2 symbols on the same line The previous code would miss the first of two IS_ENABLED(CONFIG_symbol) sequences on a line. This patch saves the rest of the line and loops to check any other entries on the same line of text. Change-Id: If4e66d5b393cc5703a502887e18f0ac11adff012 Signed-off-by: Martin Roth Reviewed-on: https://review.coreboot.org/12562 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer --- util/lint/kconfig_lint | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'util/lint') diff --git a/util/lint/kconfig_lint b/util/lint/kconfig_lint index 9bad31e585..d88caa9c60 100755 --- a/util/lint/kconfig_lint +++ b/util/lint/kconfig_lint @@ -191,25 +191,31 @@ sub check_for_def { # this seems like a bad plan. Using it on strings is dead out. #------------------------------------------------------------------------------- sub check_is_enabled { - my @is_enabled_symbols = `grep -Grn 'IS_ENABLED\\s*(\\s*CONFIG_' -- "$root_dir"`; + my @is_enabled_symbols = @collected_symbols; #sort through symbols found by grep and store them in a hash for easy access while ( my $line = shift @is_enabled_symbols ) { - if ( $line =~ /^([^:]+):(\d+):.+IS_ENABLED\s*\(\s*CONFIG_(\w+)/ ) { + if ( $line =~ /^([^:]+):(\d+):(.+IS_ENABLED.*)/ ) { my $file = $1; my $lineno = $2; - my $symbol = $3; - - #make sure that - if (exists $symbols{$symbol}) { - if ($symbols{$symbol}{type} ne "bool") { - show_error("IS_ENABLED(CONFIG_$symbol) used in $file at line $lineno. IS_ENABLED is only valid for type 'bool', not '$symbols{$symbol}{type}'."); + $line = $3; + if ( $line !~ /(.*)IS_ENABLED\s*\(\s*CONFIG_(\w+)(.*)/ ){ + show_warning("# uninterpreted IS_ENABLED at $file:$lineno: $line"); + next; + } + while ( $line =~ /(.*)IS_ENABLED\s*\(\s*CONFIG_(\w+)(.*)/ ) { + my $symbol = $2; + $line = $1.$3; + + #make sure that + if (exists $symbols{$symbol}) { + if ($symbols{$symbol}{type} ne "bool") { + show_error("IS_ENABLED(CONFIG_$symbol) used at $file:$lineno. IS_ENABLED is only valid for type 'bool', not '$symbols{$symbol}{type}'."); + } + } else { + show_error("IS_ENABLED() used on unknown value CONFIG_$symbol at $file:$lineno."); } - } else { - show_error("IS_ENABLED() used on unknown value CONFIG_$symbol in $file at line $lineno."); } - } else { - show_error("# uninterpreted IS_ENABLED line: $line"); } } } -- cgit v1.2.3