From 7cb5bddda95a87b6972b65e1f787311fbf5ad224 Mon Sep 17 00:00:00 2001
From: Etienne Kneuss <etienne.kneuss@epfl.ch>
Date: Wed, 10 Dec 2014 07:51:29 +0100
Subject: [PATCH] Fix TransformerWithPC with matches

---
 src/main/scala/leon/purescala/TransformerWithPC.scala | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/main/scala/leon/purescala/TransformerWithPC.scala b/src/main/scala/leon/purescala/TransformerWithPC.scala
index 41bf10a03..423353da3 100644
--- a/src/main/scala/leon/purescala/TransformerWithPC.scala
+++ b/src/main/scala/leon/purescala/TransformerWithPC.scala
@@ -32,9 +32,11 @@ abstract class TransformerWithPC extends Transformer {
       MatchExpr(rs, cases.map { c =>
         val patternExprPos = conditionForPattern(rs, c.pattern, includeBinders = true)
         val patternExprNeg = conditionForPattern(rs, c.pattern, includeBinders = false)
+        val map = mapForPattern(rs, c.pattern)
+        val guard = replaceFromIDs(map, c.optGuard.getOrElse(BooleanLiteral(true)))
 
         val subPath = register(patternExprPos, soFar)
-        soFar = register(Not(patternExprNeg), soFar)
+        soFar = register(not(and(patternExprNeg, guard)), soFar)
         
         MatchCase(c.pattern, c.optGuard, rec(c.rhs,subPath)).copiedFrom(c)
 
-- 
GitLab