checkpatch: detect multiple bitfield declarations
authorAndy Whitcroft <apw@shadowen.org>
Tue, 6 Jan 2009 22:41:19 +0000 (14:41 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 6 Jan 2009 23:59:15 +0000 (15:59 -0800)
Detect the colons (:) which make up secondary bitfield declarations and
apply binary colon checks.  For example the following is common idiom:

int foo:1,
    bar: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>
scripts/checkpatch.pl

index c79abb41793dfc5ef377d560776450769545be47..9883de38b446c73cdc3ce078ff99a1959462fb8b 100755 (executable)
@@ -844,11 +844,11 @@ sub annotate_values {
                        $type = 'V';
                        $av_pending = 'V';
 
-               } elsif ($cur =~ /^($Ident\s*):/) {
-                       if ($type eq 'E') {
-                               $av_pend_colon = 'L';
-                       } elsif ($type eq 'T') {
+               } elsif ($cur =~ /^($Ident\s*):(?:\s*\d+\s*(,|=|;))?/) {
+                       if (defined $2 && $type eq 'C' || $type eq 'T') {
                                $av_pend_colon = 'B';
+                       } elsif ($type eq 'E') {
+                               $av_pend_colon = 'L';
                        }
                        print "IDENT_COLON($1,$type>$av_pend_colon)\n" if ($dbg_values > 1);
                        $type = 'V';
@@ -866,6 +866,10 @@ sub annotate_values {
                        $type = 'E';
                        $av_pend_colon = 'O';
 
+               } elsif ($cur =~/^(,)/) {
+                       print "COMMA($1)\n" if ($dbg_values > 1);
+                       $type = 'C';
+
                } elsif ($cur =~ /^(\?)/o) {
                        print "QUESTION($1)\n" if ($dbg_values > 1);
                        $type = 'N';
@@ -881,7 +885,7 @@ sub annotate_values {
                        }
                        $av_pend_colon = 'O';
 
-               } elsif ($cur =~ /^(;|\[)/o) {
+               } elsif ($cur =~ /^(\[)/o) {
                        print "CLOSE($1)\n" if ($dbg_values > 1);
                        $type = 'N';