diff options
author | qadeer <unknown> | 2014-09-16 12:43:10 -0700 |
---|---|---|
committer | qadeer <unknown> | 2014-09-16 12:43:10 -0700 |
commit | 2151f863ce418b3deb50c9a8d955f4b3b72cead6 (patch) | |
tree | a45db3950f53819d424c767c6ce4ccd8b5623a01 | |
parent | d916a5ee8f357d9e61bd93e7b67a3283b0a6f185 (diff) |
fixed a crash
-rw-r--r-- | Source/Houdini/Houdini.cs | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/Source/Houdini/Houdini.cs b/Source/Houdini/Houdini.cs index af1bd8ad..7dfa1bc7 100644 --- a/Source/Houdini/Houdini.cs +++ b/Source/Houdini/Houdini.cs @@ -944,18 +944,22 @@ namespace Microsoft.Boogie.Houdini { List<Implementation> implementations = new List<Implementation>();
switch (refutedAnnotation.Kind) {
case RefutedAnnotationKind.REQUIRES:
- foreach (Implementation callee in callGraph.Successors(currentImplementation)) {
- houdiniSessions.TryGetValue(callee, out session);
- Contract.Assume(callee.Proc != null);
- if (callee.Proc.Equals(refutedAnnotation.CalleeProc) && session.InUnsatCore(refutedAnnotation.Constant))
- implementations.Add(callee);
- }
+ foreach (Implementation callee in callGraph.Successors(currentImplementation))
+ {
+ if (vcgenFailures.Contains(callee)) continue;
+ houdiniSessions.TryGetValue(callee, out session);
+ Contract.Assume(callee.Proc != null);
+ if (callee.Proc.Equals(refutedAnnotation.CalleeProc) && session.InUnsatCore(refutedAnnotation.Constant))
+ implementations.Add(callee);
+ }
break;
case RefutedAnnotationKind.ENSURES:
- foreach (Implementation caller in callGraph.Predecessors(currentImplementation)) {
- houdiniSessions.TryGetValue(caller, out session);
- if (session.InUnsatCore(refutedAnnotation.Constant))
- implementations.Add(caller);
+ foreach (Implementation caller in callGraph.Predecessors(currentImplementation))
+ {
+ if (vcgenFailures.Contains(caller)) continue;
+ houdiniSessions.TryGetValue(caller, out session);
+ if (session.InUnsatCore(refutedAnnotation.Constant))
+ implementations.Add(caller);
}
break;
case RefutedAnnotationKind.ASSERT: //the implementation is already in queue
@@ -963,6 +967,7 @@ namespace Microsoft.Boogie.Houdini { {
foreach (var impl in crossDependencies.assumedInImpl[refutedAnnotation.Constant.Name])
{
+ if (vcgenFailures.Contains(impl)) continue;
houdiniSessions.TryGetValue(impl, out session);
if (session.InUnsatCore(refutedAnnotation.Constant))
implementations.Add(impl);
|