diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/options/Exceptions.scala | 3 | ||||
| -rw-r--r-- | src/main/scala/firrtl/options/Stage.scala | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/options/Exceptions.scala b/src/main/scala/firrtl/options/Exceptions.scala index 100ff464..38b2f2e2 100644 --- a/src/main/scala/firrtl/options/Exceptions.scala +++ b/src/main/scala/firrtl/options/Exceptions.scala @@ -18,3 +18,6 @@ class OptionsException(val message: String, cause: Throwable = null) extends Ill * out of order or if the compiler did not run things in the correct order. */ class PhasePrerequisiteException(message: String, cause: Throwable = null) extends PhaseException(message, cause) + +/** Indicates that a [[Stage]] or [[Phase]] has run into a situation where it cannot continue. */ +final class StageError(val code: ExitFailure = GeneralError, cause: Throwable = null) extends Error("", cause) diff --git a/src/main/scala/firrtl/options/Stage.scala b/src/main/scala/firrtl/options/Stage.scala index f2780761..3752b846 100644 --- a/src/main/scala/firrtl/options/Stage.scala +++ b/src/main/scala/firrtl/options/Stage.scala @@ -69,6 +69,8 @@ class StageMain(val stage: Stage) { final def main(args: Array[String]): Unit = try { stage.execute(args, Seq.empty) } catch { + case a: StageError => + System.exit(a.code.number) case a: OptionsException => StageUtils.dramaticUsageError(a.message) System.exit(1) |
