From 13af0f467332c3bbdca611273e87971ad1aaa990 Mon Sep 17 00:00:00 2001 From: Etienne Kneuss <ekneuss@gmail.com> Date: Wed, 24 Oct 2012 18:20:43 +0200 Subject: [PATCH] SynthesisPhase is now an object --- src/main/scala/leon/plugin/AnalysisComponent.scala | 5 +++-- src/main/scala/leon/plugin/LeonContext.scala | 3 ++- src/main/scala/leon/synthesis/SynthesisPhase.scala | 9 ++++++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/scala/leon/plugin/AnalysisComponent.scala b/src/main/scala/leon/plugin/AnalysisComponent.scala index d6fbc999a..2d2ea4143 100644 --- a/src/main/scala/leon/plugin/AnalysisComponent.scala +++ b/src/main/scala/leon/plugin/AnalysisComponent.scala @@ -52,7 +52,7 @@ class AnalysisComponent(val global: Global, val leonReporter: Reporter, val plug , if (Settings.synthesis) List( - new SynthesisPhase(leonReporter) + SynthesisPhase ) else Nil @@ -71,7 +71,8 @@ class AnalysisComponent(val global: Global, val leonReporter: Reporter, val plug //global ref to freshName creator fresh = unit.fresh - var ac = LeonContext(program = extractCode(unit)) + var ac = LeonContext(program = extractCode(unit), + reporter = leonReporter) if(Settings.stopAfterExtraction) { leonReporter.info("Extracted program for " + unit + ": ") diff --git a/src/main/scala/leon/plugin/LeonContext.scala b/src/main/scala/leon/plugin/LeonContext.scala index 29274a5fd..0c6ebabdd 100644 --- a/src/main/scala/leon/plugin/LeonContext.scala +++ b/src/main/scala/leon/plugin/LeonContext.scala @@ -4,6 +4,7 @@ package plugin import purescala.Definitions.Program case class LeonContext( - val program: Program + val program: Program, + val reporter: Reporter ) diff --git a/src/main/scala/leon/synthesis/SynthesisPhase.scala b/src/main/scala/leon/synthesis/SynthesisPhase.scala index 84a638905..5666d15c8 100644 --- a/src/main/scala/leon/synthesis/SynthesisPhase.scala +++ b/src/main/scala/leon/synthesis/SynthesisPhase.scala @@ -1,19 +1,22 @@ package leon package synthesis +import plugin.LeonContext import purescala.Definitions.Program -class SynthesisPhase(reporter: Reporter) extends plugin.TransformationPhase { +object SynthesisPhase extends plugin.LeonPhase { val name = "Synthesis" val description = "Synthesis" - def apply(program: Program): Program = { + def run(ctx: LeonContext): LeonContext = { val quietReporter = new QuietReporter val solvers = List( new TrivialSolver(quietReporter), new FairZ3Solver(quietReporter) ) - new Synthesizer(reporter, solvers).synthesizeAll(program) + val newProgram = new Synthesizer(ctx.reporter, solvers).synthesizeAll(ctx.program) + + ctx.copy(program = newProgram) } } -- GitLab