diff options
| -rwxr-xr-x | scripts/checkpatch.pl | 18 | 
1 files changed, 16 insertions, 2 deletions
| diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index b7c181ea0ac5..046a018093a7 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -5551,6 +5551,7 @@ sub process {  		    defined($stat) && defined($cond) &&  		    $line =~ /\b(?:if|while|for)\s*\(/ && $line !~ /^.\s*#/) {  			my ($s, $c) = ($stat, $cond); +			my $fixed_assign_in_if = 0;  			if ($c =~ /\bif\s*\(.*[^<>!=]=[^=].*/s) {  				if (ERROR("ASSIGN_IN_IF", @@ -5575,6 +5576,7 @@ sub process {  						$newline .= ')';  						$newline .= " {" if (defined($brace));  						fix_insert_line($fixlinenr + 1, $newline); +						$fixed_assign_in_if = 1;  					}  				}  			} @@ -5598,8 +5600,20 @@ sub process {  					$stat_real = "[...]\n$stat_real";  				} -				ERROR("TRAILING_STATEMENTS", -				      "trailing statements should be on next line\n" . $herecurr . $stat_real); +				if (ERROR("TRAILING_STATEMENTS", +					  "trailing statements should be on next line\n" . $herecurr . $stat_real) && +				    !$fixed_assign_in_if && +				    $cond_lines == 0 && +				    $fix && $perl_version_ok && +				    $fixed[$fixlinenr] =~ /^\+(\s*)((?:if|while|for)\s*$balanced_parens)\s*(.*)$/) { +					my $indent = $1; +					my $test = $2; +					my $rest = rtrim($4); +					if ($rest =~ /;$/) { +						$fixed[$fixlinenr] = "\+$indent$test"; +						fix_insert_line($fixlinenr + 1, "$indent\t$rest"); +					} +				}  			}  		} | 
