@@ -18,6 +18,7 @@ import dotty.tools.dotc.core.Flags._
1818import dotty .tools .dotc .core .StdNames ._
1919import dotty .tools .dotc .core .Symbols ._
2020import dotty .tools .dotc .core .Types ._
21+ import dotty .tools .dotc .core .Contexts ._
2122import dotty .tools .dotc .util .Spans ._
2223import dotty .tools .dotc .transform .SymUtils ._
2324
@@ -139,20 +140,22 @@ trait BCodeSkelBuilder extends BCodeHelpers {
139140 coord = claszSymbol.coord
140141 ).entered
141142
142- val thisMap = new TreeTypeMap (
143- treeMap = {
143+ val thisMap = new TreeMap {
144+ override def transform ( tree : Tree )( using Context ) = tree match {
144145 case tree : This if tree.symbol == claszSymbol =>
145146 ref(claszSymbol.sourceModule)
147+ case ident : Ident =>
148+ super .transform(desugarIdent(ident))
146149 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 )
152155
153156 val callConstructor = New (claszSymbol.typeRef).select(claszSymbol.primaryConstructor).appliedToArgs(Nil )
154157 val assignModuleField = Assign (ref(moduleField), callConstructor)
155- val remainingConstrStatsSubst = remainingConstrStats.map(thisMap(_) )
158+ val remainingConstrStatsSubst = remainingConstrStats.map(rewire )
156159 val clinit = DefDef (
157160 clInitSymbol,
158161 Block (assignModuleField :: remainingConstrStatsSubst, unitLiteral)
0 commit comments