diff --git a/src/main/scala/leon/LeonFatalError.scala b/src/main/scala/leon/LeonFatalError.scala new file mode 100644 index 0000000000000000000000000000000000000000..6fc773292fd721b996b2cfadbe964de250e6cc3b --- /dev/null +++ b/src/main/scala/leon/LeonFatalError.scala @@ -0,0 +1,3 @@ +package leon + +case class LeonFatalError() extends Exception diff --git a/src/main/scala/leon/Main.scala b/src/main/scala/leon/Main.scala index 2e1e6634f9c1a2e07ad594765c44bee97307c5b2..1e4592f5ef838ed6212ca99f1ebf0f22365f025b 100644 --- a/src/main/scala/leon/Main.scala +++ b/src/main/scala/leon/Main.scala @@ -157,7 +157,11 @@ object Main { // Compute leon pipeline val pipeline = computePipeline(ctx.settings) - // Run pipeline - pipeline.run(ctx)(args.toList) + try { + // Run pipeline + pipeline.run(ctx)(args.toList) + } catch { + case LeonFatalError() => sys.exit(1) + } } } diff --git a/src/main/scala/leon/Reporter.scala b/src/main/scala/leon/Reporter.scala index 81ed31be83771e621472502a6426cbb7f41a2f4a..a9bff0440efd659e2d366a03822feb7a31ca8c8e 100644 --- a/src/main/scala/leon/Reporter.scala +++ b/src/main/scala/leon/Reporter.scala @@ -53,7 +53,7 @@ class DefaultReporter extends Reporter { def errorFunction(msg: Any) = output(reline(errorPfx, msg.toString)) def warningFunction(msg: Any) = output(reline(warningPfx, msg.toString)) def infoFunction(msg: Any) = output(reline(infoPfx, msg.toString)) - def fatalErrorFunction(msg: Any) = { output(reline(fatalPfx, msg.toString)); sys.exit(0) } + def fatalErrorFunction(msg: Any) = { output(reline(fatalPfx, msg.toString)); throw LeonFatalError() } } class QuietReporter extends DefaultReporter { diff --git a/src/main/scala/leon/plugin/AnalysisComponent.scala b/src/main/scala/leon/plugin/AnalysisComponent.scala index 1cc1cde07699255945ffab7a42dba0c52e586a98..783d86b5c3ed153a9903f45fb5fd16375824d44b 100644 --- a/src/main/scala/leon/plugin/AnalysisComponent.scala +++ b/src/main/scala/leon/plugin/AnalysisComponent.scala @@ -24,7 +24,7 @@ class AnalysisComponent(val global: Global, val pluginInstance: LeonPlugin) protected def stopIfErrors: Unit = { if(reporter.hasErrors) { - sys.exit(1) + throw LeonFatalError() } }