]> andersk Git - splint.git/blobdiff - src/cscannerHelp.c
Fixed problem with shadow parameters.
[splint.git] / src / cscannerHelp.c
index d3379ae632a2cc172fa5712d3acc6aea6ef499c5..1aee6d64c1e59e1c7481e993f55e1884bc97885f 100644 (file)
@@ -33,6 +33,7 @@
 # include "cscannerHelp.h"
 # include "cscanner.h"
 # include "cgrammar_tokens.h"
+# include "osd.h"
 
 static int lminput (void);
 static int s_tokLength = 0;
@@ -405,7 +406,8 @@ static char macro_nextChar (void)
        }
       else /* if (c == '@') */
        {
-         llassert (FALSE); /*@i23@*/
+         llassert (FALSE); 
+
          if (cscannerHelp_handleLlSpecial () != BADTOK)
            {
              llerrorlit (FLG_SYNTAX, "Macro cannot use special syntax");
@@ -745,9 +747,7 @@ bool cscannerHelp_handleSpecial (char *yyt)
        }
 
       llassert (*tmp == '\"');
-
       tmp++;
-
       fname = tmp;
       
       while (*tmp != '\"' && *tmp != '\0')
@@ -756,7 +756,6 @@ bool cscannerHelp_handleSpecial (char *yyt)
        }
 
       llassert (*tmp == '\"');
-
       *tmp = '\0';
 
 # if defined(OS2) || defined(MSDOS) || defined(WIN32)
@@ -935,7 +934,9 @@ int cscannerHelp_handleLlSpecial (void)
          s = mstring_append (s, c);
          charsread++;
        }
-      /*@i888@*/ }
+      /*@-branchstate@*/ 
+    } /* spurious (?) warnings about s */
+  /*@=branchstate@*/ 
 
   DPRINTF (("Read: %s / %s", s, fileloc_unparse (g_currentloc)));
 
@@ -1163,7 +1164,7 @@ int cscannerHelp_handleLlSpecial (void)
       
       if (annotationInfo_isDefined (ainfo)) {
        DPRINTF (("Found annotation: %s", annotationInfo_unparse (ainfo)));
-       /*@i324@*/ yylval.annotation = ainfo;
+       yylval.annotation = ainfo;
        s_tokLength = 0;
        sfree (os);
        sfree (t);
@@ -1433,7 +1434,9 @@ int cscannerHelp_handleLlSpecial (void)
                        message ("Semantic comment unrecognized: %s", 
                                 cstring_fromChars (os)),
                        loc);
-         /*@i888@*/ }
+         /*@-branchstate@*/
+       } /* spurious (?) warning about t */
+      /*@=branchstate@*/
       
       sfree (t);
     }
@@ -1575,7 +1578,7 @@ int cscannerHelp_processIdentifier (cstring id)
              if (annotationInfo_isDefined (ainfo)) 
                {
                  DPRINTF (("Found annotation: %s", annotationInfo_unparse (ainfo)));
-                 /*@i324@*/ yylval.annotation = ainfo;
+                 yylval.annotation = ainfo;
                  return CANNOTATION;
                }
              else
@@ -1774,12 +1777,12 @@ int cscannerHelp_processIdentifier (cstring id)
   
   if (uentry_isIter (le))
     {
-      /*@i32@*/ yylval.entry = le;
+      yylval.entry = le;
       return (ITER_NAME);
     }
   else if (uentry_isEndIter (le))
     {
-      /*@i32@*/ yylval.entry = le;
+      yylval.entry = le;
       return (ITER_ENDNAME);
     }
   else if (uentry_isUndefined (le))
@@ -1805,7 +1808,7 @@ int cscannerHelp_processIdentifier (cstring id)
        }
       else
        {
-         /*@i32@*/ yylval.entry = le;            
+         yylval.entry = le;              
          return (IDENTIFIER); 
        }
     }
@@ -1827,7 +1830,7 @@ int cscannerHelp_processIdentifier (cstring id)
     }
   else
     {
-      /*@i32@*/ yylval.entry = le;            
+      yylval.entry = le;            
       return (IDENTIFIER); 
     }
 
@@ -2144,7 +2147,6 @@ bool cscannerHelp_isConstraintToken (int tok)
 {
   return (tok == QMAXSET || tok == QMAXREAD);
           /* || tok == QMINREAD || tok == QMINSET */
-  /*@i4523@*/
   /* uncomment the additional if statement tests when minSet and minRead are supported */
 }
 
@@ -2680,7 +2682,12 @@ void cscannerHelp_advanceLine (void)
 
 int cscannerHelp_returnToken (int t)
 {
-  yylval.tok = lltok_create (t, fileloc_decColumn (g_currentloc, s_tokLength)); 
+  if (s_tokLength > fileloc_column (g_currentloc)) {
+    yylval.tok = lltok_create (t, fileloc_copy (g_currentloc));
+  } else {
+    yylval.tok = lltok_create (t, fileloc_decColumn (g_currentloc, s_tokLength)); 
+  }
+
   s_tokLength = 0; 
   s_lastWasString = FALSE; 
   return (t); 
This page took 0.04464 seconds and 4 git commands to generate.