diff options
Diffstat (limited to 'src')
7 files changed, 17 insertions, 13 deletions
diff --git a/src/main/scala/firrtl/Driver.scala b/src/main/scala/firrtl/Driver.scala index f23be6f5..c8713e09 100644 --- a/src/main/scala/firrtl/Driver.scala +++ b/src/main/scala/firrtl/Driver.scala @@ -19,7 +19,7 @@ import firrtl.Utils.throwInternalError import firrtl.stage.{FirrtlExecutionResultView, FirrtlStage} import firrtl.stage.phases.DriverCompatibility import firrtl.options.{StageUtils, Phase} -import firrtl.options.Viewer.view +import firrtl.options.Viewer /** @@ -229,7 +229,7 @@ object Driver { case e: firrtl.options.OptionsException => return FirrtlExecutionFailure(e.message) } - view[FirrtlExecutionResult](annosx) + Viewer[FirrtlExecutionResult].view(annosx) } /** diff --git a/src/main/scala/firrtl/options/OptionsView.scala b/src/main/scala/firrtl/options/OptionsView.scala index 49417ded..4235b660 100644 --- a/src/main/scala/firrtl/options/OptionsView.scala +++ b/src/main/scala/firrtl/options/OptionsView.scala @@ -19,11 +19,16 @@ trait OptionsView[T] { /** A shim to manage multiple "views" of an [[firrtl.AnnotationSeq AnnotationSeq]] */ object Viewer { + /** Helper method to get at a given [[OptionsView]]. This enables access to [[OptionsView]] methods in a more canonical + * format, e.g., you can then do `Viewer[T].view`. + * @param a an implicit [[OptionsView]] + */ + def apply[T](implicit a: OptionsView[T]): OptionsView[T] = a + /** Convert annotations to options using an implicitly provided [[OptionsView]] * @param options some annotations - * @param optionsView a converter of options to the requested type * @tparam T the type to which the input [[firrtl.AnnotationSeq AnnotationSeq]] should be viewed as */ - def view[T](options: AnnotationSeq)(implicit optionsView: OptionsView[T]): T = optionsView.view(options) + def view[T: OptionsView](options: AnnotationSeq): T = Viewer[T].view(options) } diff --git a/src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala b/src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala index 66f40d3c..bb2a8cd6 100644 --- a/src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala +++ b/src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala @@ -15,7 +15,7 @@ class WriteOutputAnnotations extends Phase { /** Write the input [[AnnotationSeq]] to a fie. */ def transform(annotations: AnnotationSeq): AnnotationSeq = { - val sopts = Viewer.view[StageOptions](annotations) + val sopts = Viewer[StageOptions].view(annotations) val serializable = annotations.filter{ case _: Unserializable => false case _: DeletedAnnotation => sopts.writeDeleted diff --git a/src/main/scala/firrtl/stage/package.scala b/src/main/scala/firrtl/stage/package.scala index b8d49208..b4dc0b54 100644 --- a/src/main/scala/firrtl/stage/package.scala +++ b/src/main/scala/firrtl/stage/package.scala @@ -41,7 +41,7 @@ package object stage { private lazy val dummyWriteEmitted = new WriteEmitted def view(options: AnnotationSeq): FirrtlExecutionResult = { - val fopts = Viewer.view[FirrtlOptions](options) + val fopts = Viewer[FirrtlOptions].view(options) val emittedRes = options .collect{ case DeletedAnnotation(dummyWriteEmitted.name, a: EmittedAnnotation[_]) => a.value.value } .mkString("\n") diff --git a/src/main/scala/firrtl/stage/phases/AddImplicitOutputFile.scala b/src/main/scala/firrtl/stage/phases/AddImplicitOutputFile.scala index a328f2da..4b4308b6 100644 --- a/src/main/scala/firrtl/stage/phases/AddImplicitOutputFile.scala +++ b/src/main/scala/firrtl/stage/phases/AddImplicitOutputFile.scala @@ -25,8 +25,7 @@ class AddImplicitOutputFile extends Phase { annotations .collectFirst { case _: OutputFileAnnotation | _: EmitAllModulesAnnotation => annotations } .getOrElse { - val topName = Viewer - .view[FirrtlOptions](annotations) + val topName = Viewer[FirrtlOptions].view(annotations) .firrtlCircuit .map(_.main) .getOrElse("a") diff --git a/src/main/scala/firrtl/stage/phases/DriverCompatibility.scala b/src/main/scala/firrtl/stage/phases/DriverCompatibility.scala index e116dac3..310e0bd4 100644 --- a/src/main/scala/firrtl/stage/phases/DriverCompatibility.scala +++ b/src/main/scala/firrtl/stage/phases/DriverCompatibility.scala @@ -41,7 +41,7 @@ object DriverCompatibility { */ @deprecated("FirrtlExecutionResult is deprecated as part of the Stage/Phase refactor. Migrate to FirrtlStage.", "1.2") def firrtlResultView(annotations: AnnotationSeq): FirrtlExecutionResult = - Viewer.view[FirrtlExecutionResult](annotations) + Viewer[FirrtlExecutionResult].view(annotations) /** Holds the name of the top (main) module in an input circuit * @param value top module name @@ -97,7 +97,7 @@ object DriverCompatibility { * @param annotations input annotations to extract targetDir from * @return the target directory */ - private def targetDir(annotations: AnnotationSeq): String = Viewer.view[StageOptions](annotations).targetDir + private def targetDir(annotations: AnnotationSeq): String = Viewer[StageOptions].view(annotations).targetDir /** Add an implicit annotation file derived from the determined top name of the circuit if no * [[firrtl.options.InputAnnotationFileAnnotation InputAnnotationFileAnnotation]] is present. @@ -165,7 +165,7 @@ object DriverCompatibility { } else if (main.nonEmpty) { StageUtils.dramaticWarning( s"Implicit reading of the input file is deprecated! Use an explict --input-file argument.") - FirrtlFileAnnotation(Viewer.view[StageOptions](annotations).getBuildFileName(s"${main.get}.fir")) +: annotations + FirrtlFileAnnotation(Viewer[StageOptions].view(annotations).getBuildFileName(s"${main.get}.fir")) +: annotations } else { annotations } diff --git a/src/main/scala/firrtl/stage/phases/WriteEmitted.scala b/src/main/scala/firrtl/stage/phases/WriteEmitted.scala index b6d95d68..7c38ebbf 100644 --- a/src/main/scala/firrtl/stage/phases/WriteEmitted.scala +++ b/src/main/scala/firrtl/stage/phases/WriteEmitted.scala @@ -28,8 +28,8 @@ class WriteEmitted extends Phase { /** Write any [[EmittedAnnotation]]s in an [[AnnotationSeq]] to files. Written [[EmittedAnnotation]]s are deleted. */ def transform(annotations: AnnotationSeq): AnnotationSeq = { - val fopts = Viewer.view[FirrtlOptions](annotations) - val sopts = Viewer.view[StageOptions](annotations) + val fopts = Viewer[FirrtlOptions].view(annotations) + val sopts = Viewer[StageOptions].view(annotations) annotations.flatMap { case a: EmittedModuleAnnotation[_] => |
