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