@@ -3,41 +3,34 @@ package dotty.tools.dotc.transform
3
3
import dotty .tools .dotc .CompilationUnit
4
4
import dotty .tools .dotc .ast .tpd
5
5
import dotty .tools .dotc .core .Contexts .Context
6
- import dotty .tools .dotc .transform . MegaPhase . MiniPhase
6
+ import dotty .tools .dotc .core . Phases . Phase
7
7
8
8
/** Set the `rootTreeOrProvider` property of class symbols. */
9
- class SetRootTree extends MiniPhase {
9
+ class SetRootTree extends Phase {
10
10
11
11
override val phaseName : String = SetRootTree .name
12
12
override def isRunnable (implicit ctx : Context ) =
13
13
super .isRunnable && ctx.settings.YretainTrees .value
14
14
15
- def runOn (unit : CompilationUnit )(implicit ctx : Context ) = {
16
- val runCtx = ctx.fresh.setCompilationUnit(unit)
17
- traverser.traverse(unit.tpdTree)(runCtx)
18
- }
19
-
20
- override def transformTypeDef (tree : tpd.TypeDef )(implicit ctx : Context ): tpd.Tree = {
21
- if (tree.symbol.isClass) {
22
- val sym = tree.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 = tree
28
- }
29
- }
30
- tree
15
+ override def run (implicit ctx : Context ): Unit = {
16
+ val tree = ctx.compilationUnit.tpdTree
17
+ traverser.traverse(tree)
31
18
}
32
19
33
20
private def traverser = new tpd.TreeTraverser {
34
- override def traverse (tree : tpd.Tree )(implicit ctx : Context ): Unit = tree match {
35
- case typeDef : tpd.TypeDef => transformTypeDef(typeDef)
36
- case other => traverseChildren(other)
21
+ override def traverse (tree : tpd.Tree )(implicit ctx : Context ): Unit = {
22
+ if (tree.isInstanceOf [tpd.TypeDef ] && tree.symbol.isClass) {
23
+ val sym = tree.symbol.asClass
24
+ tpd.sliceTopLevel(ctx.compilationUnit.tpdTree, sym) match {
25
+ case (pkg : tpd.PackageDef ) :: Nil =>
26
+ sym.rootTreeOrProvider = pkg
27
+ case _ =>
28
+ sym.rootTreeOrProvider = tree
29
+ }
30
+ }
31
+ traverseChildren(tree)
37
32
}
38
33
}
39
-
40
-
41
34
}
42
35
43
36
object SetRootTree {
0 commit comments