From 9f64c5f02b9168392328a2316511427c9fd7c72f Mon Sep 17 00:00:00 2001
From: Regis Blanc <regwblanc@gmail.com>
Date: Wed, 13 Jan 2016 15:15:53 +0100
Subject: [PATCH] fix with typed fun invocation

---
 src/main/scala/leon/xlang/AntiAliasingPhase.scala | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/main/scala/leon/xlang/AntiAliasingPhase.scala b/src/main/scala/leon/xlang/AntiAliasingPhase.scala
index 28f1ad9c6..a7adbfbaa 100644
--- a/src/main/scala/leon/xlang/AntiAliasingPhase.scala
+++ b/src/main/scala/leon/xlang/AntiAliasingPhase.scala
@@ -164,7 +164,7 @@ object AntiAliasingPhase extends TransformationPhase {
         updatedFunDefs.get(fd.fd) match {
           case None => (None, bindings)
           case Some(nfd) => {
-            val nfi = FunctionInvocation(nfd.typed, args).setPos(fi)
+            val nfi = FunctionInvocation(nfd.typed(fd.tps), args).setPos(fi)
             val fiEffects = effects.getOrElse(fd.fd, Set())
             if(fiEffects.nonEmpty) {
               val modifiedArgs: Seq[Variable] = 
@@ -267,7 +267,9 @@ object AntiAliasingPhase extends TransformationPhase {
       if(!effects.isDefinedAt(fi.tfd.fd)) {
         println("fi not defined: " + fi)
       }
-      val mutatedParams: Set[Int] = effects(fi.tfd.fd)
+      //TODO: the require should be fine once we consider nested functions as well
+      //require(effects.isDefinedAt(fi.tfd.fd)
+      val mutatedParams: Set[Int] = effects.get(fi.tfd.fd).getOrElse(Set())
       fi.args.zipWithIndex.flatMap{
         case (Variable(id), i) if mutatedParams.contains(i) => Some(id)
         case _ => None
-- 
GitLab