Skip to content

Commit 2b5a12d

Browse files
committed
Support the compilation of Scala 2.13 scala.reflect.package
1 parent 2bc6b5b commit 2b5a12d

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

compiler/src/dotty/tools/dotc/core/Definitions.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,8 @@ class Definitions {
670670
@tu lazy val ClassTagClass: ClassSymbol = requiredClass("scala.reflect.ClassTag")
671671
@tu lazy val ClassTagModule: Symbol = ClassTagClass.companionModule
672672
@tu lazy val ClassTagModule_apply: Symbol = ClassTagModule.requiredMethod(nme.apply)
673+
@tu lazy val ReflectPackageClass: Symbol = requiredPackage("scala.reflect.package").moduleClass
674+
673675

674676
@tu lazy val QuotedExprClass: ClassSymbol = requiredClass("scala.quoted.Expr")
675677
@tu lazy val QuotedExprModule: Symbol = QuotedExprClass.companionModule

compiler/src/dotty/tools/dotc/transform/PostTyper.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,11 @@ class PostTyper extends MacroTransform with IdentityDenotTransformer { thisPhase
148148
checkInferredWellFormed(tree.tpt)
149149
val sym = tree.symbol
150150
if sym.isScala2Macro && !ctx.settings.XignoreScala2Macros.value then
151-
if !sym.owner.unforcedDecls.exists(p => !p.isScala2Macro && p.name == sym.name && p.signature == sym.signature) then
151+
if !sym.owner.unforcedDecls.exists(p => !p.isScala2Macro && p.name == sym.name && p.signature == sym.signature)
152+
// Allow scala.reflect.materializeClassTag to be able to compile scala/reflect/package.scala
153+
// This should be removed on Scala 3.1
154+
&& sym.owner != defn.ReflectPackageClass
155+
then
152156
report.error("No Scala 3 implementation found for this Scala 2 macro.", tree.sourcePos)
153157
case _ =>
154158
processMemberDef(tree)

0 commit comments

Comments
 (0)