Messages in this thread Patch in this message | | | Subject | [PATCH V2] checkpatch: Improve "return is not a function" test | From | Joe Perches <> | Date | Thu, 31 Oct 2013 16:12:44 -0700 |
| |
Find a few more cases where parentheses are used around the value of a return statement.
This now uses the "$balanced_parens" test and also makes the test depend on perl v5.10 and higher.
This now finds return with parenthesis uses the old code did not find like:
ERROR: return is not a function, parentheses are not required #211: FILE: arch/m68k/include/asm/sun3xflop.h:211: + return ((error == 0) ? 0 : -1);
Signed-off-by: Joe Perches <joe@perches.com> ---
V2: Add example to commit message. No change in patch itself.
scripts/checkpatch.pl | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 23d55bf..957ba04 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -3221,21 +3221,10 @@ sub process { } # Return is not a function. - if (defined($stat) && $stat =~ /^.\s*return(\s*)(\(.*);/s) { + if (defined($stat) && $stat =~ /^.\s*return(\s*)\(/s) { my $spacing = $1; - my $value = $2; - - # Flatten any parentheses - $value =~ s/\(/ \(/g; - $value =~ s/\)/\) /g; - while ($value =~ s/\[[^\[\]]*\]/1/ || - $value !~ /(?:$Ident|-?$Constant)\s* - $Compare\s* - (?:$Ident|-?$Constant)/x && - $value =~ s/\([^\(\)]*\)/1/) { - } -#print "value<$value>\n"; - if ($value =~ /^\s*(?:$Ident|-?$Constant)\s*$/) { + if ($^V && $^V ge 5.10.0 && + $stat =~ /^.\s*return\s*$balanced_parens\s*;\s*$/) { ERROR("RETURN_PARENTHESES", "return is not a function, parentheses are not required\n" . $herecurr); @@ -3244,6 +3233,7 @@ sub process { "space required before the open parenthesis '('\n" . $herecurr); } } + # Return of what appears to be an errno should normally be -'ve if ($line =~ /^.\s*return\s*(E[A-Z]*)\s*;/) { my $name = $1;
| |