diff --git a/src/main/scala/leon/purescala/SimplifierWithPaths.scala b/src/main/scala/leon/purescala/SimplifierWithPaths.scala index 481cee54b5717a4ec836486300bbd6817c88614f..6353c6d9069a859dc1c863ad5abb3f47fa130f80 100644 --- a/src/main/scala/leon/purescala/SimplifierWithPaths.scala +++ b/src/main/scala/leon/purescala/SimplifierWithPaths.scala @@ -113,7 +113,8 @@ class SimplifierWithPaths(sf: SolverFactory[Solver]) extends TransformerWithPC { } newCases match { case List() => Error("Unreachable code").copiedFrom(e) - case List(theCase) => + case List(theCase) if !scrut.getType.isInstanceOf[AbstractClassType] => + // Avoid AbstractClassType as it may lead to invalid field accesses replaceFromIDs(mapForPattern(scrut, theCase.pattern), theCase.rhs) case _ => MatchExpr(rs, newCases).copiedFrom(e) } diff --git a/src/test/resources/regression/transformations/SimplifyPaths.scala b/src/test/resources/regression/transformations/SimplifyPaths.scala index 245e06f9435a5f7fe630d2fcba4f119d148c3da1..792b6d4a2d0846afd90d34dae41193e62876db8e 100644 --- a/src/test/resources/regression/transformations/SimplifyPaths.scala +++ b/src/test/resources/regression/transformations/SimplifyPaths.scala @@ -81,4 +81,13 @@ object Transform { a._1 } + def input07(l : List[Int]) : Int = l match { + case Nil() if false => 42 + case Cons(h,t) => h + } + + def output07(l : List[Int]) : Int = l match { + case Cons(h,t) => h + } + }