On Fri, Jan 20, 2012 at 05:15:15AM -0800, Joe Perches wrote:
> @@ -2838,7 +2849,8 @@
>                         if ($dstat ne '' &&
>                             $dstat !~ /^(?:$Ident|-?$Constant),$/ &&          
>           # 10, // foo(),
>                             $dstat !~ /^(?:$Ident|-?$Constant);$/ &&          
>           # foo();
> -                           $dstat !~ /^(?:$Ident|-?$Constant)$/ &&           
>           # 10 // foo()
> +                           $dstat !~ /^[!~-]?(?:$Ident|$Constant)$/ &&       
>   # 10 // foo() // !foo // ~foo // -foo
> +                           $dstat !~ /^'X'$/ &&                              
>           # character constants
>                             $dstat !~ /$exceptions/ &&
>                             $dstat !~ /^\.$Ident\s*=/ &&                      
>           # .foo =
>                             $dstat !~ 
> /^do\s*$Constant\s*while\s*$Constant;?$/ &&       # do {...} while (...); // 
> do {...} while (...)
> 
> I think the character change test is fine but
> the !~- addition/change is suspect.
> 
> !~- are precedence level 3 operators

Level 2?

> and can be impacted by things like ++

They work like you would expect:

#define NOT_FOO !foo
        ++NOT_FOO <-- compile error.
        NOT_FOO++ <-- works.

Anyway if people are really writing macros which are used this way,
then that's something which is outside of the scope of checkpatch.pl
to fix.

regards,
dan carpenter

Attachment: signature.asc
Description: Digital signature

_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to