checkpatch: allow parentheses on return for comparisons
authorAndy Whitcroft <apw@canonical.com>
Tue, 6 Jan 2009 22:41:24 +0000 (14:41 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 6 Jan 2009 23:59:16 +0000 (15:59 -0800)
It seems to be a common idiom to include braces on conditionals in all
contexts including return.  Allow this exception to the return is not a
function checks.  Reported by Kay Sievers.

Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
scripts/checkpatch.pl

index b953c76..5c7fd1a 100755 (executable)
@@ -127,6 +127,7 @@ our $Lval   = qr{$Ident(?:$Member)*};
 
 our $Constant  = qr{(?:[0-9]+|0x[0-9a-fA-F]+)[UL]*};
 our $Assignment        = qr{(?:\*\=|/=|%=|\+=|-=|<<=|>>=|&=|\^=|\|=|=)};
+our $Compare    = qr{<=|>=|==|!=|<|>};
 our $Operators = qr{
                        <=|>=|==|!=|
                        =>|->|<<|>>|<|>|!|~|
@@ -1983,9 +1984,9 @@ sub process {
                        my $spacing = $1;
                        my $value = $2;
 
-                       # Flatten any parentheses and braces
+                       # Flatten any parentheses
                        $value =~ s/\)\(/\) \(/g;
-                       while ($value =~ s/\([^\(\)]*\)/1/) {
+                       while ($value !~ /(?:$Ident|-?$Constant)\s*$Compare\s*(?:$Ident|-?$Constant)/ && $value =~ s/\([^\(\)]*\)/1/) {
                        }
 
                        if ($value =~ /^(?:$Ident|-?$Constant)$/) {