From 02fef8e2c381f687787ca3c6f0f607c36dfbfce6 Mon Sep 17 00:00:00 2001 From: Donggyu Kim Date: Wed, 5 Jul 2017 15:53:58 -0700 Subject: [PATCH] graceful handling of empty files --- .../scala/transforms/macros/MacroCompiler.scala | 15 ++++++++------- .../src/main/scala/transforms/macros/Utils.scala | 4 ++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/tapeout/src/main/scala/transforms/macros/MacroCompiler.scala b/tapeout/src/main/scala/transforms/macros/MacroCompiler.scala index 87386c12..4edeef5f 100644 --- a/tapeout/src/main/scala/transforms/macros/MacroCompiler.scala +++ b/tapeout/src/main/scala/transforms/macros/MacroCompiler.scala @@ -376,18 +376,19 @@ object MacroCompiler extends App { throw new Exception(usage) } - def run(args: List[String]) = { + def run(args: List[String]) { val (params, synflops) = parseArgs(Map[MacroParam, File](), false, args) try { val macros = readJSON(params get Macros).get map (x => (new Macro(x)).blackbox) - val circuit = Circuit(NoInfo, macros, macros.last.name) - val annotations = AnnotationMap(Seq(MacroCompilerAnnotation( - circuit.main, params(Macros), params get Library, synflops))) - val state = CircuitState(circuit, HighForm, Some(annotations)) val verilog = new FileWriter(params(Verilog)) - val result = new MacroCompiler compile (state, verilog) + if (macros.nonEmpty) { + val circuit = Circuit(NoInfo, macros, macros.last.name) + val annotations = AnnotationMap(Seq(MacroCompilerAnnotation( + circuit.main, params(Macros), params get Library, synflops))) + val state = CircuitState(circuit, HighForm, Some(annotations)) + val result = new MacroCompiler compile (state, verilog) + } verilog.close - result } catch { case e: java.util.NoSuchElementException => throw new Exception(usage) diff --git a/tapeout/src/main/scala/transforms/macros/Utils.scala b/tapeout/src/main/scala/transforms/macros/Utils.scala index 4520a114..e0254253 100644 --- a/tapeout/src/main/scala/transforms/macros/Utils.scala +++ b/tapeout/src/main/scala/transforms/macros/Utils.scala @@ -128,10 +128,10 @@ object Utils { case (res, _) => res } ) - case _ => None + case _ => Some(Nil) } } catch { - case _: Throwable => None + case _: Throwable => Some(Nil) } }