From 83f8f8bfaff8970a2d79d146cf6e2ff7a25b0acb Mon Sep 17 00:00:00 2001 From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch> Date: Wed, 17 Jun 2015 21:11:58 +0200 Subject: [PATCH] Let deleting code hides errors --- src/main/scala/leon/purescala/Constructors.scala | 6 ------ src/main/scala/leon/purescala/ExprOps.scala | 2 +- src/main/scala/leon/purescala/Extractors.scala | 6 +++--- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/main/scala/leon/purescala/Constructors.scala b/src/main/scala/leon/purescala/Constructors.scala index ce97e5912..a64226761 100644 --- a/src/main/scala/leon/purescala/Constructors.scala +++ b/src/main/scala/leon/purescala/Constructors.scala @@ -27,12 +27,6 @@ object Constructors { def tupleSelect(t: Expr, index: Int, originalSize: Int): Expr = tupleSelect(t, index, originalSize > 1) - def let(id: Identifier, e: Expr, bd: Expr) = { - if (variablesOf(bd) contains id) - Let(id, e, bd) - else bd - } - def letTuple(binders: Seq[Identifier], value: Expr, body: Expr) = binders match { case Nil => body diff --git a/src/main/scala/leon/purescala/ExprOps.scala b/src/main/scala/leon/purescala/ExprOps.scala index b3bd13f5d..421ee376e 100644 --- a/src/main/scala/leon/purescala/ExprOps.scala +++ b/src/main/scala/leon/purescala/ExprOps.scala @@ -682,7 +682,7 @@ object ExprOps { } val (bd, defs) = genericTransform[C](noTransformer, lift, _.flatten)(Seq())(e) - defs.foldRight(bd){ case ((id, e), body) => let(id, e, body) } + defs.foldRight(bd){ case ((id, e), body) => Let(id, e, body) } } /** diff --git a/src/main/scala/leon/purescala/Extractors.scala b/src/main/scala/leon/purescala/Extractors.scala index c363c60ba..ed0d630c3 100644 --- a/src/main/scala/leon/purescala/Extractors.scala +++ b/src/main/scala/leon/purescala/Extractors.scala @@ -83,7 +83,7 @@ object Extractors { case MapDifference(t1,t2) => Some((t1,t2,MapDifference)) case MapIsDefinedAt(t1,t2) => Some((t1,t2, MapIsDefinedAt)) case ArraySelect(t1, t2) => Some((t1, t2, ArraySelect)) - case Let(binder, e, body) => Some((e, body, let(binder, _, _))) + case Let(binder, e, body) => Some((e, body, Let(binder, _, _))) case Require(pre, body) => Some((pre, body, Require)) case Ensuring(body, post) => Some((body, post, Ensuring)) case Assert(const, oerr, body) => Some((const, body, Assert(_, oerr, _))) @@ -197,7 +197,7 @@ object Extractors { object TopLevelOrs { // expr1 AND (expr2 AND (expr3 AND ..)) => List(expr1, expr2, expr3) def unapply(e: Expr): Option[Seq[Expr]] = e match { - case Let(i, e, TopLevelOrs(bs)) => Some(bs map (let(i,e,_))) + case Let(i, e, TopLevelOrs(bs)) => Some(bs map (Let(i,e,_))) case Or(exprs) => Some(exprs.flatMap(unapply).flatten) case e => @@ -206,7 +206,7 @@ object Extractors { } object TopLevelAnds { // expr1 AND (expr2 AND (expr3 AND ..)) => List(expr1, expr2, expr3) def unapply(e: Expr): Option[Seq[Expr]] = e match { - case Let(i, e, TopLevelAnds(bs)) => Some(bs map (let(i,e,_))) + case Let(i, e, TopLevelAnds(bs)) => Some(bs map (Let(i,e,_))) case And(exprs) => Some(exprs.flatMap(unapply).flatten) case e => -- GitLab