Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f7bac03 authored by Joe Perches's avatar Joe Perches Committed by Linus Torvalds
Browse files

checkpatch: always warn on missing blank line after variable declaration block



Make the test system wide, modify the message too.

Signed-off-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 185d566b
Loading
Loading
Loading
Loading
+34 −10
Original line number Diff line number Diff line
@@ -397,6 +397,11 @@ foreach my $entry (@mode_permission_funcs) {
	$mode_perms_search .= $entry->[0];
}

our $declaration_macros = qr{(?x:
	(?:$Storage\s+)?(?:DECLARE|DEFINE)_[A-Z]+\s*\(|
	(?:$Storage\s+)?LIST_HEAD\s*\(
)};

our $allowed_asm_includes = qr{(?x:
	irq|
	memory
@@ -2268,18 +2273,37 @@ sub process {
		}

# check for missing blank lines after declarations
		if ($realfile =~ m@^(drivers/net/|net/)@ &&
		    $prevline =~ /^\+\s+$Declare\s+$Ident/ &&
		    !($prevline =~ /(?:$Compare|$Assignment|$Operators)\s*$/ ||
		      $prevline =~ /(?:\{\s*|\\)$/) &&		#extended lines
		    $sline =~ /^\+\s+/ &&			#Not at char 1
		    !($sline =~ /^\+\s+$Declare/ ||
		      $sline =~ /^\+\s+$Ident\s+$Ident/ ||	#eg: typedef foo
		if ($sline =~ /^\+\s+\S/ &&			#Not at char 1
			# actual declarations
		    ($prevline =~ /^\+\s+$Declare\s*$Ident\s*[=,;:\[]/ ||
			# foo bar; where foo is some local typedef or #define
		     $prevline =~ /^\+\s+$Ident(?:\s+|\s*\*\s*)$Ident\s*[=,;\[]/ ||
			# known declaration macros
		     $prevline =~ /^\+\s+$declaration_macros/) &&
			# for "else if" which can look like "$Ident $Ident"
		    !($prevline =~ /^\+\s+$c90_Keywords\b/ ||
			# other possible extensions of declaration lines
		      $prevline =~ /(?:$Compare|$Assignment|$Operators)\s*$/ ||
			# not starting a section or a macro "\" extended line
		      $prevline =~ /(?:\{\s*|\\)$/) &&
			# looks like a declaration
		    !($sline =~ /^\+\s+$Declare\s*$Ident\s*[=,;:\[]/ ||
			# foo bar; where foo is some local typedef or #define
		      $sline =~ /^\+\s+$Ident(?:\s+|\s*\*\s*)$Ident\s*[=,;\[]/ ||
			# known declaration macros
		      $sline =~ /^\+\s+$declaration_macros/ ||
			# start of struct or union or enum
		      $sline =~ /^\+\s+(?:union|struct|enum|typedef)\b/ ||
		      $sline =~ /^\+\s+(?:$|[\{\}\.\#\"\?\:\(])/ ||
		      $sline =~ /^\+\s+\(?\s*(?:$Compare|$Assignment|$Operators)/)) {
			# start or end of block or continuation of declaration
		      $sline =~ /^\+\s+(?:$|[\{\}\.\#\"\?\:\(\[])/ ||
			# bitfield continuation
		      $sline =~ /^\+\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/)) {
			WARN("SPACING",
			     "networking uses a blank line after declarations\n" . $hereprev);
			     "Missing a blank line after declarations\n" . $hereprev);
		}

# check for spaces at the beginning of a line.