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 @@ -775,9 +775,19 @@ object TreeChecker {
775
775
776
776
def checkMacroGeneratedTree (original : tpd.Tree , expansion : tpd.Tree )(using Context ): Unit =
777
777
if ctx.settings.XcheckMacros .value then
778
+ // We want make sure that transparent inline macros are checked in the same way that
779
+ // non transparent macros are, so we try to prepare a context which would make
780
+ // the checks behave the same way for both types of macros.
781
+ //
782
+ // E.g. Different instances of skolem types are by definition not able to be a subtype of
783
+ // one another, however in practice this is only upheld during typer phase, and we do not want
784
+ // it to be upheld during this check.
785
+ // See issue: #17009
778
786
val checkingCtx = ctx
779
787
.fresh
780
788
.setReporter(new ThrowingReporter (ctx.reporter))
789
+ .setPhase(ctx.base.inliningPhase)
790
+
781
791
val phases = ctx.base.allPhases.toList
782
792
val treeChecker = new LocalChecker (previousPhases(phases))
783
793
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