From aaac8c2f59090a880074be10b94840d6addff428 Mon Sep 17 00:00:00 2001 From: Philippe Suter <philippe.suter@gmail.com> Date: Wed, 31 Oct 2012 19:13:10 +0100 Subject: [PATCH] handling LetTuple in simplifyPaths --- src/main/scala/leon/purescala/TreeOps.scala | 5 +++++ src/main/scala/leon/purescala/Trees.scala | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/scala/leon/purescala/TreeOps.scala b/src/main/scala/leon/purescala/TreeOps.scala index 14b9ae018..5c66156db 100644 --- a/src/main/scala/leon/purescala/TreeOps.scala +++ b/src/main/scala/leon/purescala/TreeOps.scala @@ -1245,6 +1245,11 @@ object TreeOps { val se = rec(e, path) Let(i, se, rec(b, Equals(Variable(i), se) +: path)) + case LetTuple(is, e, b) => + // Similar to the Let case + val se = rec(e, path) + LetTuple(is, se, rec(b, Equals(Tuple(is.map(Variable(_))), se) +: path)) + case IfExpr(cond, then, elze) => val rc = rec(cond, path) rc match { diff --git a/src/main/scala/leon/purescala/Trees.scala b/src/main/scala/leon/purescala/Trees.scala index 5beb88945..9261a423e 100644 --- a/src/main/scala/leon/purescala/Trees.scala +++ b/src/main/scala/leon/purescala/Trees.scala @@ -83,10 +83,9 @@ object Trees { case class Tuple(exprs: Seq[Expr]) extends Expr { val subTpes = exprs.map(_.getType).map(bestRealType) - if(!subTpes.exists(_ == Untyped)) { + if(subTpes.forall(_ != Untyped)) { setType(TupleType(subTpes)) } - } // This must be 1-indexed ! -- GitLab