Skip to content
Snippets Groups Projects
Commit 9183f16f authored by Etienne Kneuss's avatar Etienne Kneuss
Browse files

Tracing now includes values for binders/patterns in MatchExpr

parent d9a82908
No related branches found
No related tags found
No related merge requests found
...@@ -17,7 +17,7 @@ class TracingEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int = 1000) ex ...@@ -17,7 +17,7 @@ class TracingEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int = 1000) ex
def initGC = new TracingGlobalContext(Nil) def initGC = new TracingGlobalContext(Nil)
class TracingGlobalContext(var values: List[(Expr, Expr)]) extends GlobalContext class TracingGlobalContext(var values: List[(Tree, Expr)]) extends GlobalContext
case class TracingRecContext(mappings: Map[Identifier, Expr], tracingFrames: Int) extends RecContext { case class TracingRecContext(mappings: Map[Identifier, Expr], tracingFrames: Int) extends RecContext {
def withVars(news: Map[Identifier, Expr]) = copy(mappings = news) def withVars(news: Map[Identifier, Expr]) = copy(mappings = news)
...@@ -37,7 +37,7 @@ class TracingEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int = 1000) ex ...@@ -37,7 +37,7 @@ class TracingEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int = 1000) ex
val r = cases.toStream.map(c => matchesCase(rscrut, c)).find(_.nonEmpty) match { val r = cases.toStream.map(c => matchesCase(rscrut, c)).find(_.nonEmpty) match {
case Some(Some((c, mappings))) => case Some(Some((c, mappings))) =>
gctx.values ++= mappings.map { case (id, v) => id.toVariable.setPos(id) -> v } gctx.values ++= (Map(c.pattern -> rscrut) ++ mappings.map { case (id, v) => id.toVariable.setPos(id) -> v })
e(c.rhs)(rctx.withNewVars(mappings), gctx) e(c.rhs)(rctx.withNewVars(mappings), gctx)
case _ => case _ =>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment