@@ -18,6 +18,7 @@ import dotty.tools.dotc.core.Flags._
18
18
import dotty .tools .dotc .core .StdNames ._
19
19
import dotty .tools .dotc .core .Symbols ._
20
20
import dotty .tools .dotc .core .Types ._
21
+ import dotty .tools .dotc .core .Contexts ._
21
22
import dotty .tools .dotc .util .Spans ._
22
23
import dotty .tools .dotc .transform .SymUtils ._
23
24
@@ -139,20 +140,22 @@ trait BCodeSkelBuilder extends BCodeHelpers {
139
140
coord = claszSymbol.coord
140
141
).entered
141
142
142
- val thisMap = new TreeTypeMap (
143
- treeMap = {
143
+ val thisMap = new TreeMap {
144
+ override def transform ( tree : Tree )( using Context ) = tree match {
144
145
case tree : This if tree.symbol == claszSymbol =>
145
146
ref(claszSymbol.sourceModule)
147
+ case ident : Ident =>
148
+ super .transform(desugarIdent(ident))
146
149
case tree =>
147
- tree
148
- },
149
- oldOwners = claszSymbol.primaryConstructor :: Nil ,
150
- newOwners = clInitSymbol :: Nil
151
- )
150
+ super .transform( tree)
151
+ }
152
+ }
153
+
154
+ def rewire ( stat : Tree ) = thisMap.transform(stat).changeOwner(claszSymbol.primaryConstructor, clInitSymbol )
152
155
153
156
val callConstructor = New (claszSymbol.typeRef).select(claszSymbol.primaryConstructor).appliedToArgs(Nil )
154
157
val assignModuleField = Assign (ref(moduleField), callConstructor)
155
- val remainingConstrStatsSubst = remainingConstrStats.map(thisMap(_) )
158
+ val remainingConstrStatsSubst = remainingConstrStats.map(rewire )
156
159
val clinit = DefDef (
157
160
clInitSymbol,
158
161
Block (assignModuleField :: remainingConstrStatsSubst, unitLiteral)
0 commit comments