]> andersk Git - splint.git/blobdiff - src/stateClauseList.c
noexpand always false.
[splint.git] / src / stateClauseList.c
index a7038370f9ff086d26b040cfb51af12533b829c5..fe5bf2ef40894f073a7b65780c54b0462eba0a14 100644 (file)
@@ -1,6 +1,6 @@
 /*
-** LCLint - annotation-assisted static program checker
-** Copyright (C) 1994-2001 University of Virginia,
+** Splint - annotation-assisted static program checker
+** Copyright (C) 1994-2003 University of Virginia,
 **         Massachusetts Institute of Technology
 **
 ** This program is free software; you can redistribute it and/or modify it
 ** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 ** MA 02111-1307, USA.
 **
-** For information on lclint: lclint-request@cs.virginia.edu
-** To report a bug: lclint-bug@cs.virginia.edu
-** For more information: http://lclint.cs.virginia.edu
+** For information on splint: info@splint.org
+** To report a bug: splint-bug@splint.org
+** For more information: http://www.splint.org
 */
 /*
 ** stateClauseList.c
 */
 
-# include "lclintMacros.nf"
+# include "splintMacros.nf"
 # include "basic.h"
 
 static /*@notnull@*/ stateClauseList stateClauseList_new (void)
@@ -213,7 +213,7 @@ int stateClauseList_compare (stateClauseList s1, stateClauseList s2)
     }
   else
     {
-      if ((int) s1 > (int) s2) 
+      if (s1 - s2 > 0) /* evans 2001-08-21: was (int) s1 > (int) s2) */
        {
          return 1;
        }
@@ -252,7 +252,7 @@ void stateClauseList_checkAll (uentry ue)
 
       if (stateClause_isGlobal (cl))
        {
-         /*@i232@*/
+         ; 
        }
       else
        {
@@ -263,6 +263,22 @@ void stateClauseList_checkAll (uentry ue)
              sRef rb = sRef_getRootBase (el);
 
              DPRINTF (("Check: %s", sRef_unparse (el)));
+
+             if (sRef_isResult (rb)) 
+               {
+                 /*
+                 ** The result type is now know, need to set it:
+                 */
+                 
+                 if (ctype_isUnknown (sRef_getType (rb)))
+                   {
+                     ctype utype = uentry_getType (ue);
+                     llassert (ctype_isFunction (utype));
+
+                     sRef_setTypeFull (rb, ctype_getReturnType (utype));
+                     DPRINTF (("el: %s", sRef_unparseFull (el)));
+                   }
+               }
              
              if (stateClause_setsMetaState (cl))
                {
@@ -273,7 +289,7 @@ void stateClauseList_checkAll (uentry ue)
                    {
                      if (optgenerror
                          (FLG_ANNOTATIONERROR,
-                          message ("Meta state anntation %s used on inappropriate reference %q in %q clause of %q: %q",
+                          message ("Attribute annotation %s used on inappropriate reference %q in %q clause of %q: %q",
                                    qual_unparse (q),
                                    sRef_unparse (el),
                                    stateClause_unparseKind (cl),
@@ -281,7 +297,7 @@ void stateClauseList_checkAll (uentry ue)
                                    stateClause_unparse (cl)),
                           uentry_whereLast (ue)))
                        {
-                         /*@i! annotationInfo_showContextError (ainfo, ue); */
+                         /* annotationInfo_showContextError (ainfo, ue); */
                        }
                    }
                }
@@ -343,6 +359,10 @@ void stateClauseList_checkAll (uentry ue)
                        {
                          ; /* Okay to override in .xh files */
                        }
+                     else if (stateClause_isQual (cl))
+                       {
+                         ; /* qual clauses don't interfere with definition state */
+                       }
                      else
                        {
                          voptgenerror 
@@ -376,7 +396,7 @@ void stateClauseList_checkAll (uentry ue)
                    {
                      voptgenerror
                        (FLG_ANNOTATIONERROR,
-                        /*@-sefparams@*/ /* This is okay because its fresh storage. */ /*@i32@*/
+                        /*@-sefparams@*/ /* This is okay because its fresh storage. */
                         message 
                         ("%q clauses includes %q of "
                          "non-dynamically allocated type %s",
@@ -431,7 +451,7 @@ void stateClauseList_checkEqual (uentry old, uentry unew)
        {
          if (stateClause_isGlobal (cl))
            {
-             ; /*@i32@*/ 
+             ; /* Don't handle globals for now */
            }
          else
            {
This page took 0.282366 seconds and 4 git commands to generate.