From 198a54892d8d17d4e750a805eacd06ee7e58dbff Mon Sep 17 00:00:00 2001
From: Philippe Suter <philippe.suter@gmail.com>
Date: Thu, 10 Jan 2013 18:29:13 +0100
Subject: [PATCH] Fixed ClassLoader issue and type errors in evaluation.

This fixes the classloader issue that we had, where, in codegen, a
library class would be loaded twice and be incompatible with itself.

It also fixes an oversight in evaluating expressions, where the returned
ground term was sometimes untyped (typically: empty sets and the like).
We now copy the type of the (unevaluated) expression in such situations.
---
 .../scala/leon/codegen/CompilationUnit.scala  |   3 ++-
 .../leon/codegen/CompiledExpression.scala     |   9 ++++++++-
 .../leon/evaluators/CodeGenEvaluator.scala    |  10 +++-------
 src/main/scala/leon/purescala/TypeTrees.scala |   2 ++
 unmanaged/common/cafebabe_2.9.2-1.2.jar       | Bin 502331 -> 502757 bytes
 5 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/main/scala/leon/codegen/CompilationUnit.scala b/src/main/scala/leon/codegen/CompilationUnit.scala
index 548e2ab00..799241c5c 100644
--- a/src/main/scala/leon/codegen/CompilationUnit.scala
+++ b/src/main/scala/leon/codegen/CompilationUnit.scala
@@ -25,7 +25,7 @@ class CompilationUnit(val program: Program, val classes: Map[Definition, ClassFi
   }.toMap
 
   protected[codegen] val loader = {
-    val l = new CafebabeClassLoader
+    val l = new CafebabeClassLoader(classOf[CompilationUnit].getClassLoader)
     classes.values.foreach(l.register(_))
     l
   }
@@ -72,6 +72,7 @@ class CompilationUnit(val program: Program, val classes: Map[Definition, ClassFi
       compileExpression(e, Seq()).evalToJVM(Seq())
   }
 
+  // Note that this may produce untyped expressions! (typically: sets, maps)
   private[codegen] def jvmToValue(e: AnyRef): Expr = e match {
     case i: Integer =>
       IntLiteral(i.toInt)
diff --git a/src/main/scala/leon/codegen/CompiledExpression.scala b/src/main/scala/leon/codegen/CompiledExpression.scala
index 0ae8f949f..02cc93407 100644
--- a/src/main/scala/leon/codegen/CompiledExpression.scala
+++ b/src/main/scala/leon/codegen/CompiledExpression.scala
@@ -18,6 +18,8 @@ class CompiledExpression(unit: CompilationUnit, cf: ClassFile, expression : Expr
   private lazy val cl = unit.loader.loadClass(cf.className)
   private lazy val meth = cl.getMethods()(0)
 
+  private val exprType = expression.getType
+
   protected[codegen] def evalToJVM(args: Seq[Expr]): AnyRef = {
     assert(args.size == argsDecl.size)
 
@@ -29,9 +31,14 @@ class CompiledExpression(unit: CompilationUnit, cf: ClassFile, expression : Expr
   }
 
   // This may throw an exception. We unwrap it if needed.
+  // We also need to reattach a type in some cases (sets, maps).
   def eval(args: Seq[Expr]) : Expr = {
     try {
-      unit.jvmToValue(evalToJVM(args))
+      val result = unit.jvmToValue(evalToJVM(args))
+      if(!result.isTyped) {
+        result.setType(exprType)
+      }
+      result
     } catch {
       case ite : InvocationTargetException => throw ite.getCause()
     }
diff --git a/src/main/scala/leon/evaluators/CodeGenEvaluator.scala b/src/main/scala/leon/evaluators/CodeGenEvaluator.scala
index c9f6bed91..7202c4ff1 100644
--- a/src/main/scala/leon/evaluators/CodeGenEvaluator.scala
+++ b/src/main/scala/leon/evaluators/CodeGenEvaluator.scala
@@ -28,6 +28,7 @@ class CodeGenEvaluator(ctx : LeonContext, val unit : CompilationUnit) extends Ev
 
   override def compile(expression : Expr, argorder : Seq[Identifier]) : Option[Seq[Expr]=>EvaluationResult] = {
     import leon.codegen.runtime.LeonCodeGenRuntimeException
+    import leon.codegen.runtime.LeonCodeGenEvaluationException
 
     val ce = unit.compileExpression(expression, argorder)
 
@@ -41,13 +42,8 @@ class CodeGenEvaluator(ctx : LeonContext, val unit : CompilationUnit) extends Ev
         case e : LeonCodeGenRuntimeException =>
           EvaluationFailure(e.getMessage)
 
-        // Required, because the class may be loaded from a different classloader,
-        // and the check above would fail.
-        case t : Throwable if t.getClass.toString.endsWith("LeonCodeGenRuntimeException") => 
-          EvaluationFailure(t.getMessage)
-
-        case t : Throwable if t.getClass.toString.endsWith("LeonCodeGenEvaluationException") => 
-          EvaluationError(t.getMessage)
+        case e : LeonCodeGenEvaluationException =>
+          EvaluationError(e.getMessage)
       }
     })
   }
diff --git a/src/main/scala/leon/purescala/TypeTrees.scala b/src/main/scala/leon/purescala/TypeTrees.scala
index 31906fb14..22e1010ae 100644
--- a/src/main/scala/leon/purescala/TypeTrees.scala
+++ b/src/main/scala/leon/purescala/TypeTrees.scala
@@ -21,6 +21,8 @@ object TypeTrees {
       case Some(o) if o != tt => scala.sys.error("Resetting type information! Type [" + o + "] is modified to [" + tt)
       case _ => this
     }
+
+    def isTyped : Boolean = (getType != Untyped)
   }
 
   class TypeErrorException(msg: String) extends Exception(msg)
diff --git a/unmanaged/common/cafebabe_2.9.2-1.2.jar b/unmanaged/common/cafebabe_2.9.2-1.2.jar
index bd36c4eee8b7548a6bb0e4fba9003597fc5bf2f6..7fdd2eae06df631006abc992f29847c84198f9a4 100644
GIT binary patch
delta 20638
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
U$vn6*LlI{OWhIm|0*H$Jf86ORga7~l

delta 19946
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
SuQa90!OnY%Bl`iOGXD<+Nfl!N

-- 
GitLab