diff options
| author | Schuyler Eldridge | 2020-04-20 13:21:15 -0400 |
|---|---|---|
| committer | Schuyler Eldridge | 2020-04-22 16:41:06 -0400 |
| commit | 0c8261d7a9ce78901841dd42d67682a64e89bfd3 (patch) | |
| tree | 272b1be519809e2b0336938b29fdf8348b713ac0 | |
| parent | c1d99f734d5bc95415538696d1b6d26ffcc7a597 (diff) | |
Add IdentityLike mix-in for TransformLike
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
| -rw-r--r-- | src/main/scala/firrtl/options/Phase.scala | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/options/Phase.scala b/src/main/scala/firrtl/options/Phase.scala index ffe3788f..847a4cf2 100644 --- a/src/main/scala/firrtl/options/Phase.scala +++ b/src/main/scala/firrtl/options/Phase.scala @@ -79,6 +79,29 @@ trait TransformLike[A] extends LazyLogging { } +/** Mix-in that makes a [[firrtl.options.TransformLike TransformLike]] guaranteed to be an identity function on some + * type. + * @tparam A the transformed type + */ +trait IdentityLike[A] { this: TransformLike[A] => + + /** The internal operation of this transform which, in order for this to be an identity function, must return nothing. + * @param a an input object + * @return nothing + */ + protected def internalTransform(a: A): Unit = Unit + + /** This method will execute `internalTransform` and then return the original input object + * @param a an input object + * @return the input object + */ + final override def transform(a: A): A = { + internalTransform(a) + a + } + +} + /** Mixin that defines dependencies between [[firrtl.options.TransformLike TransformLike]]s (hereafter referred to as * "transforms") * |
