From afd9b26e41018e6bd22956ca2cb372efc34807f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Mayer?= <mikael.mayer@epfl.ch> Date: Tue, 1 Mar 2016 11:07:34 +0100 Subject: [PATCH] Cold fix: Added missed lambda case during DefOps.replaceClassDef. More accurate comparison between CaseClassTypes. --- src/main/scala/leon/purescala/DefOps.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/scala/leon/purescala/DefOps.scala b/src/main/scala/leon/purescala/DefOps.scala index 2a20a478b..e8f8af4bb 100644 --- a/src/main/scala/leon/purescala/DefOps.scala +++ b/src/main/scala/leon/purescala/DefOps.scala @@ -589,12 +589,14 @@ object DefOps { def replaceClassDefsUse(e: Expr): Expr = { ExprOps.postMap { case Let(id, expr, body) => Some(Let(idMap(id), expr, body)) + case Lambda(vd, body) => Some(Lambda(vd.map(vd => ValDef(idMap(vd.id))), body)) case Variable(id) => Some(Variable(idMap(id))) case ci @ CaseClass(ct, args) => ciMapF(ci, tpMap(ct)).map(_.setPos(ci)) case CaseClassSelector(cct, expr, identifier) => val new_cct = tpMap(cct) - Some(CaseClassSelector(new_cct, expr, (if(new_cct != cct) idMap(identifier) else identifier))) + val selection = (if(new_cct != cct || new_cct.classDef.fieldsIds != cct.classDef.fieldsIds) idMap(identifier) else identifier) + Some(CaseClassSelector(new_cct, expr, selection)) case IsInstanceOf(e, ct) => Some(IsInstanceOf(e, tpMap(ct))) case AsInstanceOf(e, ct) => Some(AsInstanceOf(e, tpMap(ct))) case MatchExpr(scrut, cases) => -- GitLab