Skip to content

Commit 8c62ec9

Browse files
committed
Avoid too eager transform of for lhs & accessor rhs
1 parent 18ada51 commit 8c62ec9

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

compiler/src/dotty/tools/dotc/transform/Constructors.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import Symbols.*
1515
import Decorators.*
1616
import DenotTransformers.*
1717
import collection.mutable
18+
import Types.*
1819

1920
object Constructors {
2021
val name: String = "constructors"
@@ -197,6 +198,10 @@ class Constructors extends MiniPhase with IdentityDenotTransformer { thisPhase =
197198
) &&
198199
fn.symbol.info.resultType.classSymbol == outerParam.info.classSymbol =>
199200
ref(outerParam)
201+
case Assign(lhs, rhs) if lhs.symbol.name == nme.OUTER => // not transform LHS of assignment to $outer field
202+
cpy.Assign(tree)(lhs, super.transform(rhs))
203+
case dd: DefDef if dd.name.endsWith(nme.OUTER.asSimpleName) => // not transform RHS of outer accessor
204+
dd
200205
case tree: RefTree if tree.symbol.is(ParamAccessor) && tree.symbol.name == nme.OUTER =>
201206
ref(outerParam)
202207
case _ =>

0 commit comments

Comments
 (0)