This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new d59fbfdbdc tools/nxstyle: fix wrong error reports for if statements
d59fbfdbdc is described below

commit d59fbfdbdcdc7d0b350b7d7abbad9c7c3dd1b9ab
Author: LuchianMihai <[email protected]>
AuthorDate: Mon Aug 26 16:00:01 2024 +0300

    tools/nxstyle: fix wrong error reports for if statements
    
    * Fix nxstyle check so it does not report error on comments on the same
    line as if statements
    * Rework if statement checks
    * Report warning instead of error for is statements check fail
---
 tools/nxstyle.c | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/tools/nxstyle.c b/tools/nxstyle.c
index bcf796203d..30947c12ea 100644
--- a/tools/nxstyle.c
+++ b/tools/nxstyle.c
@@ -1225,6 +1225,7 @@ int main(int argc, char **argv, char **envp)
   bswitch        = false;       /* True: Within a switch statement */
   bstring        = false;       /* True: Within a string */
   bexternc       = false;       /* True: Within 'extern "C"' */
+  bif            = false;       /* True: This line is beginning of a 'if' 
statement */
   ppline         = PPLINE_NONE; /* > 0: The next line the continuation of a
                                  * pre-processor command */
   rhcomment      = 0;           /* Indentation of Comment to the right of code
@@ -1258,7 +1259,6 @@ int main(int argc, char **argv, char **envp)
       bstatm       = false;    /* True: This line is beginning of a
                                 * statement */
       bfor         = false;    /* REVISIT: Implies for() is all on one line */
-      bif          = false;    /* True: This line is beginning of a 'if' 
statement */
 
       /* If we are not in a comment, then this certainly is not a right-hand
        * comment.
@@ -2260,6 +2260,13 @@ int main(int argc, char **argv, char **envp)
                         }
                     }
 
+                  /* Allow comments on the same line as the if statement */
+
+                  if (bif == true)
+                    {
+                      bif = false;
+                    }
+
                   n++;
                   continue;
                 }
@@ -2630,9 +2637,11 @@ int main(int argc, char **argv, char **envp)
                         ERROR("Space precedes right parenthesis", lineno, n);
                       }
 
-                    if (bif == true && pnest == 0 && line[n + 1] != '\n')
+                    /* Unset bif if last parenthesis is closed */
+
+                    if (bif == true && pnest == 0)
                       {
-                        ERROR("If statement followed by garbage", lineno, n);
+                        bif = false;
                       }
                   }
                   break;
@@ -3105,7 +3114,16 @@ int main(int argc, char **argv, char **envp)
           if (m > 1 && isspace((int)line[m - 1]) &&
               line[m - 1] != '\n' && line[m - 1] != '\r')
             {
-               ERROR("Dangling whitespace at the end of line", lineno, m);
+              /* Report warning on if statement only is pnest is 0
+               * This takes into consideration the multiline if statement.
+               */
+
+              if (bif == true && pnest == 0)
+                {
+                  WARN("If statement followed by garbage", lineno, n);
+                }
+
+              ERROR("Dangling whitespace at the end of line", lineno, m);
             }
 
           /* The line width is determined by the location of the final

Reply via email to