From d39332d2b77c7efb24419402b8919f57a346e90d Mon Sep 17 00:00:00 2001 From: Etienne Kneuss <ekneuss@gmail.com> Date: Thu, 15 Oct 2015 13:03:39 +0200 Subject: [PATCH] Catch exceptions thrown in assertCnstr --- .../leon/evaluators/RecursiveEvaluator.scala | 18 +++++++++++------- .../solvers/combinators/PortfolioSolver.scala | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/scala/leon/evaluators/RecursiveEvaluator.scala b/src/main/scala/leon/evaluators/RecursiveEvaluator.scala index 68709c64e..9e97c6c7b 100644 --- a/src/main/scala/leon/evaluators/RecursiveEvaluator.scala +++ b/src/main/scala/leon/evaluators/RecursiveEvaluator.scala @@ -652,15 +652,16 @@ abstract class RecursiveEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int val solverf = SolverFactory.getFromSettings(ctx, program) val solver = solverf.getNewSolver() - val eqs = p.as.map { - case id => - Equals(Variable(id), rctx.mappings(id)) - } - - val cnstr = andJoin(eqs ::: p.pc :: p.phi :: Nil) - solver.assertCnstr(cnstr) try { + val eqs = p.as.map { + case id => + Equals(Variable(id), rctx.mappings(id)) + } + + val cnstr = andJoin(eqs ::: p.pc :: p.phi :: Nil) + solver.assertCnstr(cnstr) + solver.check match { case Some(true) => val model = solver.getModel @@ -681,6 +682,9 @@ abstract class RecursiveEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int case _ => throw RuntimeError("Timeout exceeded") } + } catch { + case e: Throwable => + throw EvalError("Runtime synthesis of choose failed: "+e.getMessage) } finally { solverf.reclaim(solver) solverf.shutdown() diff --git a/src/main/scala/leon/solvers/combinators/PortfolioSolver.scala b/src/main/scala/leon/solvers/combinators/PortfolioSolver.scala index b2003d101..79ee4c3cf 100644 --- a/src/main/scala/leon/solvers/combinators/PortfolioSolver.scala +++ b/src/main/scala/leon/solvers/combinators/PortfolioSolver.scala @@ -65,7 +65,7 @@ class PortfolioSolver[S <: Solver with Interruptible](val context: LeonContext, r case None => context.reporter.debug("No solver succeeded") - fs.foreach(f => println(f.value)) + //fs.foreach(f => println(f.value)) None } -- GitLab