From 7fdd8e8b7ea0cc5e0987376e46feb7f790e88487 Mon Sep 17 00:00:00 2001
From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch>
Date: Wed, 1 Jul 2015 18:03:11 +0200
Subject: [PATCH] Fix bug in RecursiveEvaluator

---
 src/main/scala/leon/evaluators/RecursiveEvaluator.scala | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/main/scala/leon/evaluators/RecursiveEvaluator.scala b/src/main/scala/leon/evaluators/RecursiveEvaluator.scala
index aac2586ed..1ee1aa528 100644
--- a/src/main/scala/leon/evaluators/RecursiveEvaluator.scala
+++ b/src/main/scala/leon/evaluators/RecursiveEvaluator.scala
@@ -21,8 +21,6 @@ abstract class RecursiveEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int
   type RC <: RecContext
   type GC <: GlobalContext
 
-  var lastGC: Option[GC] = None
-
   case class EvalError(msg : String) extends Exception
   case class RuntimeError(msg : String) extends Exception
 
@@ -53,9 +51,8 @@ abstract class RecursiveEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int
 
   def eval(ex: Expr, mappings: Map[Identifier, Expr]) = {
     try {
-      lastGC = Some(initGC())
       ctx.timers.evaluators.recursive.runtime.start()
-      EvaluationResults.Successful(e(ex)(initRC(mappings), lastGC.get))
+      EvaluationResults.Successful(e(ex)(initRC(mappings), initGC()))
     } catch {
       case so: StackOverflowError =>
         EvaluationResults.EvaluatorError("Stack overflow")
@@ -627,7 +624,7 @@ abstract class RecursiveEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int
       case GuardedCase(p, g, rhs) =>
         for {
           r <- matchesPattern(p, scrut)
-          BooleanLiteral(true) = e(g)(rctx.withNewVars(r), gctx)
+          if e(g)(rctx.withNewVars(r), gctx) == BooleanLiteral(true)
         } yield (caze, r)
     }
   }
-- 
GitLab