Skip to content

Commit 28a671a

Browse files
committed
Fix the order of traverse tree
1 parent 5a108df commit 28a671a

File tree

3 files changed

+110
-148
lines changed

3 files changed

+110
-148
lines changed

compiler/src/dotty/tools/dotc/semanticdb/ExtractSemanticDB.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,10 +178,6 @@ class ExtractSemanticDB extends Phase:
178178
registerSymbol(tree.symbol, symbolKinds(tree))
179179
case tree: Template =>
180180
val ctorSym = tree.constr.symbol
181-
if !excludeDef(ctorSym) then
182-
traverseAnnotsOfDefinition(ctorSym)
183-
registerDefinition(ctorSym, tree.constr.nameSpan.startPos, Set.empty, tree.source)
184-
ctorParams(tree.constr.termParamss, tree.constr.leadingTypeParams, tree.body)
185181
for parent <- tree.parentsOrDerived if parent.span.hasLength do
186182
traverse(parent)
187183
val selfSpan = tree.self.span
@@ -191,6 +187,10 @@ class ExtractSemanticDB extends Phase:
191187
tree.body.foreachUntilImport(traverse).foreach(traverse) // the first import statement
192188
else
193189
tree.body.foreach(traverse)
190+
if !excludeDef(ctorSym) then
191+
traverseAnnotsOfDefinition(ctorSym)
192+
ctorParams(tree.constr.termParamss, tree.constr.leadingTypeParams, tree.body)
193+
registerDefinition(ctorSym, tree.constr.nameSpan.startPos, Set.empty, tree.source)
194194
case tree: Apply =>
195195
@tu lazy val genParamSymbol: Name => String = tree.fun.symbol.funParamSymbol
196196
traverse(tree.fun)
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
11
package example
22

3-
def m1/*<-example::RecOrRefined$package.m1().*/(a/*<-example::RecOrRefined$package.m1().(a)*/: Int/*->scala::Int#*/ { val x/*<-local3*/: Int/*->scala::Int#*/ }) = ???/*->scala::Predef.`???`().*/
4-
def m2/*<-example::RecOrRefined$package.m2().*/(x/*<-example::RecOrRefined$package.m2().(x)*/: { val x/*<-local4*/: Int/*->scala::Int#*/; def y/*<-local5*/: Int/*->scala::Int#*/ }) = ???/*->scala::Predef.`???`().*/
5-
def m3/*<-example::RecOrRefined$package.m3().*/(x/*<-example::RecOrRefined$package.m3().(x)*/: { val x/*<-local6*/: Int/*->scala::Int#*/; def y/*<-local7*/: Int/*->scala::Int#*/; type z/*<-local8*/ }) = ???/*->scala::Predef.`???`().*/
3+
def m1/*<-example::RecOrRefined$package.m1().*/(a/*<-example::RecOrRefined$package.m1().(a)*/: Int/*->scala::Int#*/ { val x/*<-local4*/: Int/*->scala::Int#*/ }) = ???/*->scala::Predef.`???`().*/
4+
def m2/*<-example::RecOrRefined$package.m2().*/(x/*<-example::RecOrRefined$package.m2().(x)*/: { val x/*<-local5*/: Int/*->scala::Int#*/; def y/*<-local6*/: Int/*->scala::Int#*/ }) = ???/*->scala::Predef.`???`().*/
5+
def m3/*<-example::RecOrRefined$package.m3().*/(x/*<-example::RecOrRefined$package.m3().(x)*/: { val x/*<-local7*/: Int/*->scala::Int#*/; def y/*<-local8*/: Int/*->scala::Int#*/; type z/*<-local9*/ }) = ???/*->scala::Predef.`???`().*/
66
trait PolyHolder/*<-example::PolyHolder#*/ {
77
def foo/*<-example::PolyHolder#foo().*/[T/*<-example::PolyHolder#foo().[T]*/](t/*<-example::PolyHolder#foo().(t)*/: T/*->example::PolyHolder#foo().[T]*/): Any/*->scala::Any#*/
88
}
99

10-
def m4/*<-example::RecOrRefined$package.m4().*/(x/*<-example::RecOrRefined$package.m4().(x)*/: PolyHolder/*->example::PolyHolder#*/ { def foo/*<-local11*/[T/*<-local9*/](t/*<-local10*/: T/*->local9*/): T/*->local9*/ }) = ???/*->scala::Predef.`???`().*/
11-
def m5/*<-example::RecOrRefined$package.m5().*/[Z/*<-example::RecOrRefined$package.m5().[Z]*/](x/*<-example::RecOrRefined$package.m5().(x)*/: Int/*->scala::Int#*/): PolyHolder/*->example::PolyHolder#*/ { def foo/*<-local14*/[T/*<-local12*/](t/*<-local13*/: T/*->local12*/): T/*->local12*/ } = ???/*->scala::Predef.`???`().*/
10+
def m4/*<-example::RecOrRefined$package.m4().*/(x/*<-example::RecOrRefined$package.m4().(x)*/: PolyHolder/*->example::PolyHolder#*/ { def foo/*<-local12*/[T/*<-local10*/](t/*<-local11*/: T/*->local10*/): T/*->local10*/ }) = ???/*->scala::Predef.`???`().*/
11+
def m5/*<-example::RecOrRefined$package.m5().*/[Z/*<-example::RecOrRefined$package.m5().[Z]*/](x/*<-example::RecOrRefined$package.m5().(x)*/: Int/*->scala::Int#*/): PolyHolder/*->example::PolyHolder#*/ { def foo/*<-local15*/[T/*<-local13*/](t/*<-local14*/: T/*->local13*/): T/*->local13*/ } = ???/*->scala::Predef.`???`().*/
1212

13-
type m6/*<-example::RecOrRefined$package.m6#*/ = [X/*<-example::RecOrRefined$package.m6#[X]*/] =>> PolyHolder/*->example::PolyHolder#*/ { def foo/*<-local17*/[T/*<-local15*/](t/*<-local16*/: T/*->local15*/): T/*->local15*/ }
13+
type m6/*<-example::RecOrRefined$package.m6#*/ = [X/*<-example::RecOrRefined$package.m6#[X]*/] =>> PolyHolder/*->example::PolyHolder#*/ { def foo/*<-local18*/[T/*<-local16*/](t/*<-local17*/: T/*->local16*/): T/*->local16*/ }
1414

1515
class Record/*<-example::Record#*/(elems/*<-example::Record#elems.*/: (String/*->scala::Predef.String#*/, Any/*->scala::Any#*/)*) extends Selectable/*->scala::Selectable#*/:
1616
private val fields/*<-example::Record#fields.*/ = elems/*->example::Record#elems.*/.toMap/*->scala::collection::IterableOnceOps#toMap().*/
1717
def selectDynamic/*<-example::Record#selectDynamic().*/(name/*<-example::Record#selectDynamic().(name)*/: String/*->scala::Predef.String#*/): Any/*->scala::Any#*/ = fields/*->example::Record#fields.*/(name/*->example::Record#selectDynamic().(name)*/)
1818

1919
type Person/*<-example::RecOrRefined$package.Person#*/ = Record/*->example::Record#*/ {
20-
val name/*<-local18*/: String/*->scala::Predef.String#*/
21-
val age/*<-local19*/: Int/*->scala::Int#*/
20+
val name/*<-local19*/: String/*->scala::Predef.String#*/
21+
val age/*<-local20*/: Int/*->scala::Int#*/
2222
}
2323

2424
// RecType
2525
class C/*<-example::C#*/ { type T1/*<-example::C#T1#*/; type T2/*<-example::C#T2#*/ }
26-
type C2/*<-example::RecOrRefined$package.C2#*/ = C/*->example::C#*/ { type T1/*<-local20*/; type T2/*<-local21*/ = T1/*->local20*/ }
26+
type C2/*<-example::RecOrRefined$package.C2#*/ = C/*->example::C#*/ { type T1/*<-local21*/; type T2/*<-local22*/ = T1/*->local21*/ }
2727

2828
trait SpecialRefinement/*<-example::SpecialRefinement#*/ {
2929
def pickOne/*<-example::SpecialRefinement#pickOne().*/[T/*<-example::SpecialRefinement#pickOne().[T]*/](as/*<-example::SpecialRefinement#pickOne().(as)*/: T/*->example::SpecialRefinement#pickOne().[T]*/*): Option/*->scala::Option#*/[Any/*->scala::Any#*/]
3030
}
3131

32-
class PickOneRefinement_1/*<-example::PickOneRefinement_1#*/[S/*<-example::PickOneRefinement_1#[S]*/ <: SpecialRefinement/*->example::SpecialRefinement#*/ { def pickOne/*<-local2*/[T/*<-local0*/](as/*<-local1*/: T/*->local0*/*): Option/*->scala::Option#*/[String/*->scala::Predef.String#*/] }] {
32+
class PickOneRefinement_1/*<-example::PickOneRefinement_1#*/[S/*<-example::PickOneRefinement_1#[S]*/ <: SpecialRefinement/*->example::SpecialRefinement#*/ { def pickOne/*<-local3*/[T/*<-local1*/](as/*<-local2*/: T/*->local1*/*): Option/*->scala::Option#*/[String/*->scala::Predef.String#*/] }] {
3333
def run/*<-example::PickOneRefinement_1#run().*/(s/*<-example::PickOneRefinement_1#run().(s)*/: S/*->example::PickOneRefinement_1#[S]*/, as/*<-example::PickOneRefinement_1#run().(as)*/: String/*->scala::Predef.String#*/*): Option/*->scala::Option#*/[String/*->scala::Predef.String#*/] = s/*->example::PickOneRefinement_1#run().(s)*/.pickOne/*->example::SpecialRefinement#pickOne().*/(as/*->example::PickOneRefinement_1#run().(as)*/:_*)
3434
}

0 commit comments

Comments
 (0)