checkpatch.pl: recognize the #elif preprocessor directive
PATCH 1/1 checkpatch.pl: recognize the #elif preprocessor directive
checkpatch.pl does not recognize #elif as a preprocessor directive causing it to print bogus errors for, e.g.:
ERROR: need consistent spacing around '&' (ctx:WxV) when the operator is not recognized as unary in this context.
for example:
void foo(void)
{
int x, y, z;
void *p[1] = {
#if defined(X)
&x
#elif defined(Y)
&y
#else
&z
#endif
};
}Signed-off-by Benny Halevy <[email protected]>
--- scripts/checkpatch.pl | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
scripts/checkpatch.pl +1 -1
@@ -534,7 +534,7 @@ sub annotate_values { $preprocessor = 1; $paren_type[$paren] = 'N'; - } elsif ($cur =~ /^(#\s*(?:ifdef|ifndef|if|else|endif))/o) { + } elsif ($cur =~ /^(#\s*(?:ifdef|ifndef|if|else|elif|endif))/o) { print "PRE($1)\n" if ($debug); $preprocessor = 1; $type = 'N';
Quoted 21 lines · Benny Halevy
checkpatch.pl does not recognize #elif as a preprocessor directive causing it to print bogus errors for, e.g.:
ERROR: need consistent spacing around '&' (ctx:WxV) when the operator is not recognized as unary in this context.for example:
void foo(void)
{ int x, y, z; void *p[1] = { #if defined(X) &x #elif defined(Y) &y #else &z #endif }; }
Quoted 1 line
Signed-off-by Benny Halevy <[email protected]>
Yes, thanks; good catch. Commited this and added tests for it. Will be in 0.13 which is imminent.
-apw