Skip to content

Commit 95f3e25

Browse files
committed
Handle undesugared ident
1 parent eb69120 commit 95f3e25

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

compiler/src/dotty/tools/backend/jvm/BCodeSkelBuilder.scala

+11-8
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import dotty.tools.dotc.core.Flags._
1818
import dotty.tools.dotc.core.StdNames._
1919
import dotty.tools.dotc.core.Symbols._
2020
import dotty.tools.dotc.core.Types._
21+
import dotty.tools.dotc.core.Contexts._
2122
import dotty.tools.dotc.util.Spans._
2223
import 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

Comments
 (0)