From e36ef7c4412d5cda57bf98a596fae7533a0c3ed6 Mon Sep 17 00:00:00 2001 From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch> Date: Wed, 3 Aug 2016 15:04:10 +0200 Subject: [PATCH] Add CollectorWithPC constructor --- .../inox/transformers/CollectorWithPC.scala | 26 +++++++++++++++++++ .../inox/transformers/TransformerWithPC.scala | 3 --- 2 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 src/main/scala/inox/transformers/CollectorWithPC.scala diff --git a/src/main/scala/inox/transformers/CollectorWithPC.scala b/src/main/scala/inox/transformers/CollectorWithPC.scala new file mode 100644 index 000000000..771fab6f8 --- /dev/null +++ b/src/main/scala/inox/transformers/CollectorWithPC.scala @@ -0,0 +1,26 @@ +/* Copyright 2009-2016 EPFL, Lausanne */ + +package inox +package transformers + +/** A [[Collector]] that collects path conditions */ +trait CollectorWithPC extends TransformerWithPC with Collector + +object CollectorWithPC { + def apply[T](p: Program)(f: PartialFunction[(p.trees.Expr, p.symbols.Path), T]) = { + new CollectorWithPC { + + type R = T + val trees: p.trees.type = p.trees + val symbols: p.symbols.type = p.symbols + import trees.Expr + import symbols.Path + val initEnv: Path = Path.empty + + protected def step(e: Expr, env: Path): List[(T, Path)] = { + f.lift((e, env)).map((_, env)).toList + } + + } + } +} diff --git a/src/main/scala/inox/transformers/TransformerWithPC.scala b/src/main/scala/inox/transformers/TransformerWithPC.scala index fd0709898..ecda40920 100644 --- a/src/main/scala/inox/transformers/TransformerWithPC.scala +++ b/src/main/scala/inox/transformers/TransformerWithPC.scala @@ -95,6 +95,3 @@ trait TransformerWithPC extends Transformer { } } - -/** A [[Collector]] that collects path conditions */ -trait CollectorWithPC extends TransformerWithPC with Collector -- GitLab