check-format.pl: Allow nested indentation of labels (not only at line pos 1)
authorDr. David von Oheimb <David.von.Oheimb@siemens.com>
Mon, 28 Sep 2020 07:18:01 +0000 (09:18 +0200)
committerDr. David von Oheimb <David.von.Oheimb@siemens.com>
Wed, 30 Sep 2020 18:51:23 +0000 (20:51 +0200)
Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/13019)

util/check-format-test-negatives.c
util/check-format-test-positives.c
util/check-format.pl

index d1de4104bc7869742317c34602e802e7533a0a11..3ce0740bc11185511d1518bf41d109af77d4a07a 100644 (file)
@@ -282,10 +282,17 @@ static void *fun(void)
         /* comment */
         return NULL;
 
+label0:
+ label1: /* allow special indent 1 for label at outermost level in body */
     do {
+    label2:
         size_t available_len, data_len;
         const char *curr = txt, *next = txt;
         char *tmp;
+
+        {
+        label3:
+        }
     } while (1);
 
     char *intraline_string_with_comment_delimiters_and_dbl_space = "1  /*1";
index 7d9bbea5c7c9f32eb427b923047154555d0c59bb..c2ad61f0d2b8fed31ae74ed6f487d44d6dad82b5 100644 (file)
@@ -117,7 +117,9 @@ int f (int a,       /*@ space after fn before '(', reported unless sloppy-spc */
         do f(c, c); /*@ (non-brace) code after 'do' */
         while ( 2); /*@ space after '(', reported unless sloppy-spc */
     b; c;           /*@ more than one statement per line */
+  outer:            /*@ outer label special indent off by 1 */
     do{             /*@ no space before '{', reported unless sloppy-spc */
+     inner:         /*@ inner label normal indent off by 1 */
         f (3,       /*@ space after fn before '(', reported unless sloppy-spc */
            4);      /*@0 false negative: should report single stmt in braces */
     }               /*@0 'while' not on same line as preceding '}' */
@@ -127,7 +129,6 @@ int f (int a,       /*@ space after fn before '(', reported unless sloppy-spc */
     case(2):        /*@ no space after 'case', reported unless sloppy-spc */
     default: ;      /*@ code after 'default:' */
 }                   /*@ statement indent off by -4 */
-  label:            /*@ label special statement indent off by 1 */
     return(         /*@ no space after 'return', reported unless sloppy-spc */
            x); }    /*@ code before block-level '}' */
 /* Here the tool should stop complaining apart from the below issues at EOF */
index 8852f3df8cbc232ed4b1ebcdc574316758d8229e..3230dc31fb3fe563fb68f34bd126c47f384efac5 100755 (executable)
@@ -798,7 +798,7 @@ while (<>) { # loop over all lines of all input files
             $local_offset = -INDENT_LEVEL;
         } else {
             if (m/^([\s@]*)(\w+):/) { # (leading) label, cannot be "default"
-                $local_offset = -INDENT_LEVEL + 1 ;
+                $local_offset = -INDENT_LEVEL;
                 $has_label = 1;
             }
         }