From 7bcd4243263c8104202cd1d370e918be54be64e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Blanc?= <regwblanc@gmail.com> Date: Wed, 12 Dec 2012 22:17:26 +0100 Subject: [PATCH] use LeonFatalError to exit --- src/main/scala/leon/LeonFatalError.scala | 3 +++ src/main/scala/leon/Main.scala | 8 ++++++-- src/main/scala/leon/Reporter.scala | 2 +- src/main/scala/leon/plugin/AnalysisComponent.scala | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 src/main/scala/leon/LeonFatalError.scala diff --git a/src/main/scala/leon/LeonFatalError.scala b/src/main/scala/leon/LeonFatalError.scala new file mode 100644 index 000000000..6fc773292 --- /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 2e1e6634f..1e4592f5e 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 81ed31be8..a9bff0440 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 1cc1cde07..783d86b5c 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() } } -- GitLab