Skip to content

Commit 6272e8d

Browse files
committed
Use Transformer instead of Traverser
1 parent aa10ba7 commit 6272e8d

File tree

1 file changed

+20
-23
lines changed

1 file changed

+20
-23
lines changed

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

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,34 @@ package dotty.tools.dotc.transform
33
import dotty.tools.dotc.CompilationUnit
44
import dotty.tools.dotc.ast.tpd
55
import dotty.tools.dotc.core.Contexts.Context
6-
import dotty.tools.dotc.core.Phases.Phase
76

87
/** Set the `rootTreeOrProvider` property of class symbols. */
9-
class SetRootTree extends Phase {
8+
class SetRootTree extends MacroTransform {
109

1110
override val phaseName: String = SetRootTree.name
1211
override def isRunnable(implicit ctx: Context) =
1312
super.isRunnable && ctx.settings.YretainTrees.value
1413

15-
override def run(implicit ctx: Context): Unit = {
16-
val tree = ctx.compilationUnit.tpdTree
17-
traverser.traverse(tree)
18-
}
19-
20-
private def traverser = new tpd.TreeTraverser {
21-
override def traverse(tree: tpd.Tree)(implicit ctx: Context): Unit = {
22-
tree match {
23-
case pkg: tpd.PackageDef =>
24-
traverseChildren(pkg)
25-
case td: tpd.TypeDef =>
26-
if (td.symbol.isClass) {
27-
val sym = td.symbol.asClass
28-
tpd.sliceTopLevel(ctx.compilationUnit.tpdTree, sym) match {
29-
case (pkg: tpd.PackageDef) :: Nil =>
30-
sym.rootTreeOrProvider = pkg
31-
case _ =>
32-
sym.rootTreeOrProvider = td
14+
override protected def newTransformer(implicit ctx: Context): Transformer = {
15+
new Transformer {
16+
override def transform(tree: tpd.Tree)(implicit ctx: Context): tpd.Tree = {
17+
tree match {
18+
case pkg: tpd.PackageDef =>
19+
super.transform(pkg)
20+
case td: tpd.TypeDef =>
21+
if (td.symbol.isClass) {
22+
val sym = td.symbol.asClass
23+
tpd.sliceTopLevel(ctx.compilationUnit.tpdTree, sym) match {
24+
case (pkg: tpd.PackageDef) :: Nil =>
25+
sym.rootTreeOrProvider = pkg
26+
case _ =>
27+
sym.rootTreeOrProvider = td
28+
}
3329
}
34-
}
35-
case _ =>
36-
()
30+
td
31+
case other =>
32+
other
33+
}
3734
}
3835
}
3936
}

0 commit comments

Comments
 (0)