summaryrefslogtreecommitdiff
path: root/macros/src/main/scala/chisel3/internal/InstantiableMacro.scala
diff options
context:
space:
mode:
Diffstat (limited to 'macros/src/main/scala/chisel3/internal/InstantiableMacro.scala')
-rw-r--r--macros/src/main/scala/chisel3/internal/InstantiableMacro.scala27
1 files changed, 17 insertions, 10 deletions
diff --git a/macros/src/main/scala/chisel3/internal/InstantiableMacro.scala b/macros/src/main/scala/chisel3/internal/InstantiableMacro.scala
index 18c6c7aa..d66b51ac 100644
--- a/macros/src/main/scala/chisel3/internal/InstantiableMacro.scala
+++ b/macros/src/main/scala/chisel3/internal/InstantiableMacro.scala
@@ -6,7 +6,6 @@ import scala.language.experimental.macros
import scala.annotation.StaticAnnotation
import scala.reflect.macros.whitebox
-
private[chisel3] object instantiableMacro {
def impl(c: whitebox.Context)(annottees: c.Expr[Any]*): c.Expr[Any] = {
@@ -38,7 +37,7 @@ private[chisel3] object instantiableMacro {
val result = {
val (clz, objOpt) = annottees.map(_.tree).toList match {
case Seq(c, o) => (c, Some(o))
- case Seq(c) => (c, None)
+ case Seq(c) => (c, None)
}
val (newClz, implicitClzs, tpname) = clz match {
case q"$mods class $tpname[..$tparams] $ctorMods(...$paramss) extends { ..$earlydefns } with ..$parents { $self => ..$stats }" =>
@@ -46,19 +45,27 @@ private[chisel3] object instantiableMacro {
val instname = TypeName(tpname + c.freshName())
val (newStats, extensions) = processBody(stats)
val argTParams = tparams.map(_.name)
- (q""" $mods class $tpname[..$tparams] $ctorMods(...$paramss) extends { ..$earlydefns } with ..$parents with chisel3.experimental.hierarchy.IsInstantiable { $self => ..$newStats } """,
- Seq(q"""implicit class $defname[..$tparams](___module: chisel3.experimental.hierarchy.Definition[$tpname[..$argTParams]]) { ..$extensions }""",
- q"""implicit class $instname[..$tparams](___module: chisel3.experimental.hierarchy.Instance[$tpname[..$argTParams]]) { ..$extensions } """),
- tpname)
+ (
+ q""" $mods class $tpname[..$tparams] $ctorMods(...$paramss) extends { ..$earlydefns } with ..$parents with chisel3.experimental.hierarchy.IsInstantiable { $self => ..$newStats } """,
+ Seq(
+ q"""implicit class $defname[..$tparams](___module: chisel3.experimental.hierarchy.Definition[$tpname[..$argTParams]]) { ..$extensions }""",
+ q"""implicit class $instname[..$tparams](___module: chisel3.experimental.hierarchy.Instance[$tpname[..$argTParams]]) { ..$extensions } """
+ ),
+ tpname
+ )
case q"$mods trait $tpname[..$tparams] extends { ..$earlydefns } with ..$parents { $self => ..$stats }" =>
val defname = TypeName(tpname + c.freshName())
val instname = TypeName(tpname + c.freshName())
val (newStats, extensions) = processBody(stats)
val argTParams = tparams.map(_.name)
- (q"$mods trait $tpname[..$tparams] extends { ..$earlydefns } with ..$parents with chisel3.experimental.hierarchy.IsInstantiable { $self => ..$newStats }",
- Seq(q"""implicit class $defname[..$tparams](___module: chisel3.experimental.hierarchy.Definition[$tpname[..$argTParams]]) { ..$extensions }""",
- q"""implicit class $instname[..$tparams](___module: chisel3.experimental.hierarchy.Instance[$tpname[..$argTParams]]) { ..$extensions } """),
- tpname)
+ (
+ q"$mods trait $tpname[..$tparams] extends { ..$earlydefns } with ..$parents with chisel3.experimental.hierarchy.IsInstantiable { $self => ..$newStats }",
+ Seq(
+ q"""implicit class $defname[..$tparams](___module: chisel3.experimental.hierarchy.Definition[$tpname[..$argTParams]]) { ..$extensions }""",
+ q"""implicit class $instname[..$tparams](___module: chisel3.experimental.hierarchy.Instance[$tpname[..$argTParams]]) { ..$extensions } """
+ ),
+ tpname
+ )
}
val newObj = objOpt match {
case None => q"""object ${tpname.toTermName} { ..$implicitClzs } """