File tree Expand file tree Collapse file tree 1 file changed +18
-9
lines changed
compiler/src/dotty/tools/dotc/transform Expand file tree Collapse file tree 1 file changed +18
-9
lines changed Original file line number Diff line number Diff line change @@ -19,16 +19,25 @@ class SetRootTree extends Phase {
19
19
20
20
private def traverser = new tpd.TreeTraverser {
21
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
- }
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
33
+ }
34
+ }
35
+ traverseChildren(td)
36
+ case tpl : tpd.Template =>
37
+ traverseChildren(tpl)
38
+ case _ =>
39
+ ()
30
40
}
31
- traverseChildren(tree)
32
41
}
33
42
}
34
43
}
You can’t perform that action at this time.
0 commit comments