diff options
| author | Andy Whitcroft <apw@shadowen.org> | 2008-07-24 00:28:57 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-24 13:47:25 -0400 |
| commit | c8cb2ca37ed51aa1f3b20e3eff1e72df1c400f70 (patch) | |
| tree | 1855161684a9b0db3254698509b2a0dd33ed8c1c /scripts | |
| parent | fee61c47d15270bdea699a8a3dd867f0825c3541 (diff) | |
checkpatch: types: some types may also be identifiers
Some types such as typedefs may overlap real identifiers. Be more
targetted about when a type can really exist. Where it cannot let it be
an identifier. This prevents false reporting of the minus '-' in unary
context in the following:
foo[bar->bool - 1];
Signed-off-by: Andy Whitcroft <apw@shadowen.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/checkpatch.pl | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 83ae37b38621..5420db6502fc 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl | |||
| @@ -171,6 +171,7 @@ our @modifierList = ( | |||
| 171 | sub build_types { | 171 | sub build_types { |
| 172 | my $mods = "(?: \n" . join("|\n ", @modifierList) . "\n)"; | 172 | my $mods = "(?: \n" . join("|\n ", @modifierList) . "\n)"; |
| 173 | my $all = "(?: \n" . join("|\n ", @typeList) . "\n)"; | 173 | my $all = "(?: \n" . join("|\n ", @typeList) . "\n)"; |
| 174 | $Modifier = qr{(?:$Attribute|$Sparse|$mods)}; | ||
| 174 | $NonptrType = qr{ | 175 | $NonptrType = qr{ |
| 175 | (?:const\s+)? | 176 | (?:const\s+)? |
| 176 | (?:$mods\s+)? | 177 | (?:$mods\s+)? |
| @@ -178,15 +179,14 @@ sub build_types { | |||
| 178 | (?:typeof|__typeof__)\s*\(\s*\**\s*$Ident\s*\)| | 179 | (?:typeof|__typeof__)\s*\(\s*\**\s*$Ident\s*\)| |
| 179 | (?:${all}\b) | 180 | (?:${all}\b) |
| 180 | ) | 181 | ) |
| 181 | (?:\s+$Sparse|\s+const)* | 182 | (?:\s+$Modifier|\s+const)* |
| 182 | }x; | 183 | }x; |
| 183 | $Type = qr{ | 184 | $Type = qr{ |
| 184 | $NonptrType | 185 | $NonptrType |
| 185 | (?:\s*\*+\s*const|\s*\*+|(?:\s*\[\s*\])+)? | 186 | (?:\s*\*+\s*const|\s*\*+|(?:\s*\[\s*\])+)? |
| 186 | (?:\s+$Inline|\s+$Sparse|\s+$Attribute|\s+$mods)* | 187 | (?:\s+$Inline|\s+$Modifier)* |
| 187 | }x; | 188 | }x; |
| 188 | $Declare = qr{(?:$Storage\s+)?$Type}; | 189 | $Declare = qr{(?:$Storage\s+)?$Type}; |
| 189 | $Modifier = qr{(?:$Attribute|$Sparse|$mods)}; | ||
| 190 | } | 190 | } |
| 191 | build_types(); | 191 | build_types(); |
| 192 | 192 | ||
| @@ -715,7 +715,7 @@ sub annotate_values { | |||
| 715 | $av_preprocessor = 0; | 715 | $av_preprocessor = 0; |
| 716 | } | 716 | } |
| 717 | 717 | ||
| 718 | } elsif ($cur =~ /^($Type)/) { | 718 | } elsif ($cur =~ /^($Type)\s*(?:$Ident|,|\))/) { |
| 719 | print "DECLARE($1)\n" if ($dbg_values > 1); | 719 | print "DECLARE($1)\n" if ($dbg_values > 1); |
| 720 | $type = 'T'; | 720 | $type = 'T'; |
| 721 | 721 | ||
| @@ -800,8 +800,9 @@ sub annotate_values { | |||
| 800 | print "PAREN('$1')\n" if ($dbg_values > 1); | 800 | print "PAREN('$1')\n" if ($dbg_values > 1); |
| 801 | } | 801 | } |
| 802 | 802 | ||
| 803 | } elsif ($cur =~ /^($Ident)\(/o) { | 803 | } elsif ($cur =~ /^($Ident)\s*\(/o) { |
| 804 | print "FUNC($1)\n" if ($dbg_values > 1); | 804 | print "FUNC($1)\n" if ($dbg_values > 1); |
| 805 | $type = 'V'; | ||
| 805 | $av_pending = 'V'; | 806 | $av_pending = 'V'; |
| 806 | 807 | ||
| 807 | } elsif ($cur =~ /^($Ident|$Constant)/o) { | 808 | } elsif ($cur =~ /^($Ident|$Constant)/o) { |
