File tree Expand file tree Collapse file tree 3 files changed +22
-0
lines changed
compiler/src/dotty/tools/dotc/transform Expand file tree Collapse file tree 3 files changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -837,9 +837,19 @@ object TreeChecker {
837
837
838
838
def checkMacroGeneratedTree (original : tpd.Tree , expansion : tpd.Tree )(using Context ): Unit =
839
839
if ctx.settings.XcheckMacros .value then
840
+ // We want make sure that transparent inline macros are checked in the same way that
841
+ // non transparent macros are, so we try to prepare a context which would make
842
+ // the checks behave the same way for both types of macros.
843
+ //
844
+ // E.g. Different instances of skolem types are by definition not able to be a subtype of
845
+ // one another, however in practice this is only upheld during typer phase, and we do not want
846
+ // it to be upheld during this check.
847
+ // See issue: #17009
840
848
val checkingCtx = ctx
841
849
.fresh
842
850
.setReporter(new ThrowingReporter (ctx.reporter))
851
+ .setPhase(ctx.base.inliningPhase)
852
+
843
853
val phases = ctx.base.allPhases.toList
844
854
val treeChecker = new LocalChecker (previousPhases(phases))
845
855
Original file line number Diff line number Diff line change
1
+ import scala .quoted ._
2
+
3
+ object Macro {
4
+ transparent inline def transform [T ](inline expr : T ): T = $ { transformImpl[T ](' expr ) }
5
+ def transformImpl [T : Type ](f : Expr [T ])(using Quotes ): Expr [T ] = f
6
+ }
Original file line number Diff line number Diff line change
1
+ def processLine (line : String ): Unit = {
2
+ Macro .transform {
3
+ line.split(" " ).nn
4
+ ???
5
+ }
6
+ }
You can’t perform that action at this time.
0 commit comments