aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/DependencyAPIMigration.scala
diff options
context:
space:
mode:
authorSchuyler Eldridge2020-04-20 12:47:33 -0400
committerSchuyler Eldridge2020-04-22 16:41:06 -0400
commitc1d99f734d5bc95415538696d1b6d26ffcc7a597 (patch)
treedf572d7f7ba757e8cd14541bbffd39f4e57d5851 /src/main/scala/firrtl/DependencyAPIMigration.scala
parent3355711b0f3a17bea74a2cc332821c35c8ecae9d (diff)
Add trait-based Dependency API migration path
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src/main/scala/firrtl/DependencyAPIMigration.scala')
-rw-r--r--src/main/scala/firrtl/DependencyAPIMigration.scala38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/DependencyAPIMigration.scala b/src/main/scala/firrtl/DependencyAPIMigration.scala
new file mode 100644
index 00000000..8dabe849
--- /dev/null
+++ b/src/main/scala/firrtl/DependencyAPIMigration.scala
@@ -0,0 +1,38 @@
+// See LICENSE for license details.
+
+package firrtl
+
+import firrtl.stage.TransformManager.TransformDependency
+
+/** This trait helps ease migration from old [[firrtl.CircuitForm CircuitForm]] specification of dependencies to
+ * Dependency API specification of dependencies. This trait implements deprecated, abstract [[Transform]] methods
+ * (`inputForm` and `outputForm`) for you and sets default values for dependencies:
+ *
+ * - `prerequisites` are empty
+ * - `optionalPrerequisites` are empty
+ * - `dependents` are empty
+ * - all transforms are invalidated
+ *
+ * For more information, see: https://bit.ly/2Voppre
+ */
+trait DependencyAPIMigration { this: Transform =>
+
+ @deprecated(
+ "Use Dependency API methods for equivalent functionality. See: https://bit.ly/2Voppre",
+ "FIRRTL 1.3")
+ final override def inputForm: CircuitForm = UnknownForm
+
+ @deprecated(
+ "Use Dependency API methods for equivalent functionality. See: https://bit.ly/2Voppre",
+ "FIRRTL 1.3")
+ final override def outputForm: CircuitForm = UnknownForm
+
+ override def prerequisites: Seq[TransformDependency] = Seq.empty
+
+ override def optionalPrerequisites: Seq[TransformDependency] = Seq.empty
+
+ override def dependents: Seq[TransformDependency] = Seq.empty
+
+ override def invalidates(a: Transform): Boolean = true
+
+}