checkpatch: improve "no space is necessary after a cast" test
The "no space is necessary after a cast" sizeof exclusion doesn't work properly. The test reports a false positive for code like: BUILD_BUG_ON(sizeof(struct batadv_bla_claim_dst) != 6); Make it work, simplify the exclusions, and add some comments. Signed-off-by: Joe Perches <joe@perches.com> Reported-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
d43698e8ab
commit
6ab3a9701e
|
@ -2552,8 +2552,15 @@ sub process {
|
|||
}
|
||||
}
|
||||
|
||||
if ($line =~ /^\+.*(\w+\s*)?\(\s*$Type\s*\)[ \t]+(?!$Assignment|$Arithmetic|[,;:\?\(\{\}\[\<\>]|&&|\|\||\\$)/ &&
|
||||
(!defined($1) || $1 !~ /sizeof\s*/)) {
|
||||
# check for space after cast like "(int) foo" or "(struct foo) bar"
|
||||
# avoid checking a few false positives:
|
||||
# "sizeof(<type>)" or "__alignof__(<type>)"
|
||||
# function pointer declarations like "(*foo)(int) = bar;"
|
||||
# structure definitions like "(struct foo) { 0 };"
|
||||
# multiline macros that define functions
|
||||
# known attributes or the __attribute__ keyword
|
||||
if ($line =~ /^\+(.*)\(\s*$Type\s*\)([ \t]++)((?![={]|\\$|$Attribute|__attribute__))/ &&
|
||||
(!defined($1) || $1 !~ /\b(?:sizeof|__alignof__)\s*$/)) {
|
||||
if (CHK("SPACING",
|
||||
"No space is necessary after a cast\n" . $herecurr) &&
|
||||
$fix) {
|
||||
|
|
Loading…
Reference in New Issue