HAOUAS Elyes has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/61469 )
Change subject: util/lint/checkpatch: Update "check for missing blank lines after declarations" ......................................................................
util/lint/checkpatch: Update "check for missing blank lines after declarations"
This is to reduce difference with linux v5.16.
Change-Id: I1b7bc2b4ec832f0abeda215c381856a5ec153883 Signed-off-by: Elyes HAOUAS ehaouas@noos.fr --- M util/lint/checkpatch.pl 1 file changed, 28 insertions(+), 23 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/69/61469/1
diff --git a/util/lint/checkpatch.pl b/util/lint/checkpatch.pl index 9bd490d..fdf6818 100755 --- a/util/lint/checkpatch.pl +++ b/util/lint/checkpatch.pl @@ -3259,43 +3259,48 @@ }
# check for missing blank lines after declarations - if ($sline =~ /^+\s+\S/ && #Not at char 1 - # actual declarations - ($prevline =~ /^+\s+$Declare\s*$Ident\s*[=,;:[]/ || +# (declarations must have the same indentation and not be at the start of line) + if (($prevline =~ /+(\s+)\S/) && $sline =~ /^+$1\S/) { + # use temporaries + my $sl = $sline; + my $pl = $prevline; + # remove $Attribute/$Sparse uses to simplify comparisons + $sl =~ s/\b(?:$Attribute|$Sparse)\b//g; + $pl =~ s/\b(?:$Attribute|$Sparse)\b//g; + if (($pl =~ /^+\s+$Declare\s*$Ident\s*[=,;:[]/ || # function pointer declarations - $prevline =~ /^+\s+$Declare\s*(\s**\s*$Ident\s*)\s*[=,;:[(]/ || + $pl =~ /^+\s+$Declare\s*(\s**\s*$Ident\s*)\s*[=,;:[(]/ || # foo bar; where foo is some local typedef or #define - $prevline =~ /^+\s+$Ident(?:\s+|\s**\s*)$Ident\s*[=,;[]/ || + $pl =~ /^+\s+$Ident(?:\s+|\s**\s*)$Ident\s*[=,;[]/ || # known declaration macros - $prevline =~ /^+\s+$declaration_macros/) && + $pl =~ /^+\s+$declaration_macros/) && # for "else if" which can look like "$Ident $Ident" - !($prevline =~ /^+\s+$c90_Keywords\b/ || + !($pl =~ /^+\s+$c90_Keywords\b/ || # other possible extensions of declaration lines - $prevline =~ /(?:$Compare|$Assignment|$Operators)\s*$/ || + $pl =~ /(?:$Compare|$Assignment|$Operators)\s*$/ || # not starting a section or a macro "" extended line - $prevline =~ /(?:{\s*|\)$/) && + $pl =~ /(?:{\s*|\)$/) && # looks like a declaration - !($sline =~ /^+\s+$Declare\s*$Ident\s*[=,;:[]/ || + !($sl =~ /^+\s+$Declare\s*$Ident\s*[=,;:[]/ || # function pointer declarations - $sline =~ /^+\s+$Declare\s*(\s**\s*$Ident\s*)\s*[=,;:[(]/ || + $sl =~ /^+\s+$Declare\s*(\s**\s*$Ident\s*)\s*[=,;:[(]/ || # foo bar; where foo is some local typedef or #define - $sline =~ /^+\s+$Ident(?:\s+|\s**\s*)$Ident\s*[=,;[]/ || + $sl =~ /^+\s+$Ident(?:\s+|\s**\s*)$Ident\s*[=,;[]/ || # known declaration macros - $sline =~ /^+\s+$declaration_macros/ || + $sl =~ /^+\s+$declaration_macros/ || # start of struct or union or enum - $sline =~ /^+\s+(?:union|struct|enum|typedef)\b/ || + $sl =~ /^+\s+(?:static\s+)?(?:const\s+)?(?:union|struct|enum|typedef)\b/ || # start or end of block or continuation of declaration - $sline =~ /^+\s+(?:$|[{}.#"?:([])/ || + $sl =~ /^+\s+(?:$|[{}.#"?:([])/ || # bitfield continuation - $sline =~ /^+\s+$Ident\s*:\s*\d+\s*[,;]/ || + $sl =~ /^+\s+$Ident\s*:\s*\d+\s*[,;]/ || # other possible extensions of declaration lines - $sline =~ /^+\s+(?\s*(?:$Compare|$Assignment|$Operators)/) && - # indentation of previous and current line are the same - (($prevline =~ /+(\s+)\S/) && $sline =~ /^+$1\S/)) { - if (WARN("LINE_SPACING", - "Missing a blank line after declarations\n" . $hereprev) && - $fix) { - fix_insert_line($fixlinenr, "+"); + $sl =~ /^+\s+(?\s*(?:$Compare|$Assignment|$Operators)/)) { + if (WARN("LINE_SPACING", + "Missing a blank line after declarations\n" . $hereprev) && + $fix) { + fix_insert_line($fixlinenr, "+"); + } } }