aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xscripts/checkpatch.pl25
1 files changed, 25 insertions, 0 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 9bb4a421a8d0..260b324b6c31 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -4128,6 +4128,31 @@ sub process {
4128 } 4128 }
4129 } 4129 }
4130 4130
4131# check for case / default statements not preceeded by break/fallthrough/switch
4132 if ($line =~ /^.\s*(?:case\s+(?:$Ident|$Constant)\s*|default):/) {
4133 my $has_break = 0;
4134 my $has_statement = 0;
4135 my $count = 0;
4136 my $prevline = $linenr;
4137 while ($prevline > 1 && $count < 3 && !$has_break) {
4138 $prevline--;
4139 my $rline = $rawlines[$prevline - 1];
4140 my $fline = $lines[$prevline - 1];
4141 last if ($fline =~ /^\@\@/);
4142 next if ($fline =~ /^\-/);
4143 next if ($fline =~ /^.(?:\s*(?:case\s+(?:$Ident|$Constant)[\s$;]*|default):[\s$;]*)*$/);
4144 $has_break = 1 if ($rline =~ /fall[\s_-]*(through|thru)/i);
4145 next if ($fline =~ /^.[\s$;]*$/);
4146 $has_statement = 1;
4147 $count++;
4148 $has_break = 1 if ($fline =~ /\bswitch\b|\b(?:break\s*;[\s$;]*$|return\b|goto\b|continue\b)/);
4149 }
4150 if (!$has_break && $has_statement) {
4151 WARN("MISSING_BREAK",
4152 "Possible switch case/default not preceeded by break or fallthrough comment\n" . $herecurr);
4153 }
4154 }
4155
4131# check for switch/default statements without a break; 4156# check for switch/default statements without a break;
4132 if ($^V && $^V ge 5.10.0 && 4157 if ($^V && $^V ge 5.10.0 &&
4133 defined $stat && 4158 defined $stat &&