From 759170bbc27f1c9d2bd69b8b618227ce055db7ec Mon Sep 17 00:00:00 2001 From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch> Date: Tue, 8 Sep 2015 18:53:42 +0200 Subject: [PATCH] Instantiate type before substituting args when inlining --- src/main/scala/leon/purescala/TypeOps.scala | 2 +- src/main/scala/leon/utils/InliningPhase.scala | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/scala/leon/purescala/TypeOps.scala b/src/main/scala/leon/purescala/TypeOps.scala index 5c68340e6..0e7493018 100644 --- a/src/main/scala/leon/purescala/TypeOps.scala +++ b/src/main/scala/leon/purescala/TypeOps.scala @@ -260,7 +260,7 @@ object TypeOps { (LiteralPattern(newOb,lit), (ob zip newOb).toMap) case _ => - sys.error("woot!?") + sys.error(s"woot!? $p:$expType") } (srec(e), cases.map(trCase))//.copiedFrom(m) diff --git a/src/main/scala/leon/utils/InliningPhase.scala b/src/main/scala/leon/utils/InliningPhase.scala index dea267601..cc2862c76 100644 --- a/src/main/scala/leon/utils/InliningPhase.scala +++ b/src/main/scala/leon/utils/InliningPhase.scala @@ -40,8 +40,8 @@ object InliningPhase extends TransformationPhase { for (fd <- p.definedFunctions) { fd.fullBody = simplify(preMap { case FunctionInvocation(TypedFunDef(fd, tps), args) if doInline(fd) => - val newBody = replaceFromIDs(fd.params.map(_.id).zip(args).toMap, fd.fullBody) - Some(instantiateType(newBody, (fd.tparams zip tps).toMap, Map())) + val newBody = instantiateType(fd.fullBody, (fd.tparams zip tps).toMap, Map()) + Some(replaceFromIDs(fd.params.map(_.id).zip(args).toMap, newBody)) case _ => None }(fd.fullBody)) -- GitLab