aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/Driver.scala4
-rw-r--r--src/main/scala/firrtl/options/OptionsView.scala9
-rw-r--r--src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala2
-rw-r--r--src/main/scala/firrtl/stage/package.scala2
-rw-r--r--src/main/scala/firrtl/stage/phases/AddImplicitOutputFile.scala3
-rw-r--r--src/main/scala/firrtl/stage/phases/DriverCompatibility.scala6
-rw-r--r--src/main/scala/firrtl/stage/phases/WriteEmitted.scala4
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[_] =>