summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorJack2022-07-30 22:41:15 +0000
committerJack2022-07-30 22:41:15 +0000
commit4cd44fa4dab370fcc5c20bcacc1fa0ee02327252 (patch)
tree05730be260feca0d2a870c4bb88325d36631a8fc /macros
parentfe9635ef21bad233945617a24ab16cfa4055f2d1 (diff)
parentbced77045c8fc5db37e40b159c49220929e15d46 (diff)
Merge branch '3.5.x' into 3.5-release
Diffstat (limited to 'macros')
-rw-r--r--macros/src/main/scala/chisel3/internal/naming/NamingAnnotations.scala4
-rw-r--r--macros/src/main/scala/chisel3/internal/sourceinfo/SourceInfoTransform.scala28
2 files changed, 32 insertions, 0 deletions
diff --git a/macros/src/main/scala/chisel3/internal/naming/NamingAnnotations.scala b/macros/src/main/scala/chisel3/internal/naming/NamingAnnotations.scala
index b12826fc..01c3d4c1 100644
--- a/macros/src/main/scala/chisel3/internal/naming/NamingAnnotations.scala
+++ b/macros/src/main/scala/chisel3/internal/naming/NamingAnnotations.scala
@@ -207,6 +207,10 @@ class treedump extends StaticAnnotation {
def macroTransform(annottees: Any*): Any = macro chisel3.internal.naming.DebugTransforms.treedump
}
@compileTimeOnly("enable macro paradise to expand macro annotations")
+@deprecated(
+ "Use chisel3.experimental.AffectsChiselPrefix instead. @chiselName will be removed in Chisel 3.6",
+ "Chisel 3.5"
+)
class chiselName extends StaticAnnotation {
def macroTransform(annottees: Any*): Any = macro chisel3.internal.naming.NamingTransforms.chiselName
}
diff --git a/macros/src/main/scala/chisel3/internal/sourceinfo/SourceInfoTransform.scala b/macros/src/main/scala/chisel3/internal/sourceinfo/SourceInfoTransform.scala
index 3e310774..d772fd8b 100644
--- a/macros/src/main/scala/chisel3/internal/sourceinfo/SourceInfoTransform.scala
+++ b/macros/src/main/scala/chisel3/internal/sourceinfo/SourceInfoTransform.scala
@@ -249,3 +249,31 @@ class SourceInfoWhiteboxTransform(val c: whitebox.Context) extends AutoSourceTra
q"$thisObj.$doFuncTerm($that)($implicitSourceInfo, $implicitCompileOptions)"
}
}
+
+// Workaround for https://github.com/sbt/sbt/issues/3966
+object IntLiteralApplyTransform
+
+class IntLiteralApplyTransform(val c: Context) extends AutoSourceTransform {
+ import c.universe._
+
+ def safeApply(x: c.Tree): c.Tree = {
+ c.macroApplication match {
+ case q"$_.$clazz($lit).$func.apply($arg)" =>
+ if (
+ Set("U", "S").contains(func.toString) &&
+ Set("fromStringToLiteral", "fromIntToLiteral", "fromLongToIteral", "fromBigIntToLiteral").contains(
+ clazz.toString
+ )
+ ) {
+ val msg =
+ s"""Passing an Int to .$func is usually a mistake: It does *not* set the width but does a bit extract.
+ |Did you mean .$func($arg.W)?
+ |If you do want bit extraction, use .$func.extract($arg) instead.
+ |""".stripMargin
+ c.warning(c.enclosingPosition, msg)
+ }
+ case _ => // do nothing
+ }
+ q"$thisObj.$doFuncTerm($x)($implicitSourceInfo, $implicitCompileOptions)"
+ }
+}