]> andersk Git - splint.git/blobdiff - src/functionClauseList.c
Pushed back constraintResolve.c to the previous version.
[splint.git] / src / functionClauseList.c
index f35d6a544607a2eb5c379ba422c00bdb17eb2332..665605ca7b8cbcf8b04c7ae330c50428ba688ada 100644 (file)
@@ -1,6 +1,6 @@
 /*
 ** Splint - annotation-assisted static program checker
-** Copyright (C) 1994-2002 University of Virginia,
+** Copyright (C) 1994-2003 University of Virginia,
 **         Massachusetts Institute of Technology
 **
 ** This program is free software; you can redistribute it and/or modify it
@@ -172,9 +172,25 @@ functionClauseList_free (functionClauseList s)
     }
 }
 
-void
-functionClauseList_getImplictConstraints (functionClauseList s)
+functionClauseList 
+functionClauseList_setImplictConstraints (/*@returned@*/ functionClauseList s)
 {
+  bool addedConstraints;
+
+  constraintList c;
+  
+  DPRINTF ((message ("functionClauseList_setImplictConstraints called ") ));
+  
+  addedConstraints = FALSE;
+
+
+  c = getImplicitFcnConstraints ();
+  
+  if (constraintList_isEmpty(c) )
+    {
+      return s;
+    }
+  
   functionClauseList_elements(s, el)
     {
       if (functionClause_isRequires(el))
@@ -188,12 +204,15 @@ functionClauseList_getImplictConstraints (functionClauseList s)
                  constraintList implCons = getImplicitFcnConstraints ();
                  
                  DPRINTF ((message ("functionClauseList_ImplictConstraints adding the implict constraints: %s to %s",
-                                    constraintList_print(implCons), constraintList_print (con->constraint.buffer))));
+                                    constraintList_print(implCons), constraintList_print (con->constraint.buffer))));
                  
-                 functionConstraint_addBufferConstraints (con, constraintList_copy (implCons));
+                 functionConstraint_addBufferConstraints (con, constraintList_copy (implCons) );
+
+                 addedConstraints = TRUE;
                  
                  DPRINTF ((message ("functionClauseList_ImplictConstraints the new constraint is %s",
                                     functionConstraint_unparse (con))));
+
                }
              else
                {
@@ -204,5 +223,20 @@ functionClauseList_getImplictConstraints (functionClauseList s)
        }
     }
   
-  end_functionClauseList_elements 
+  end_functionClauseList_elements;
+
+  if (!addedConstraints)
+    {
+      functionConstraint fCon;
+      functionClause fClause;
+      
+      constraintList implCons = getImplicitFcnConstraints ();
+      
+      fCon = functionConstraint_createBufferConstraint(constraintList_copy (implCons) );
+      fClause = functionClause_createRequires(fCon);
+      s = functionClauseList_add(s, fClause);
+
+       
+    }
+  return s;    
 }
This page took 0.053051 seconds and 4 git commands to generate.