Skip to content

Commit df5fcef

Browse files
committed
Fix and simplify initializer
Initializer was needlessly complex and did not work anymore for lazy vals (for them, we implicitly made use of the fact that the initializer would find the symbol itself. But after name mangling that logic would break down.
1 parent 9ae558a commit df5fcef

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

src/dotty/tools/dotc/transform/Mixin.scala

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -112,17 +112,19 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform =>
112112
sym
113113

114114
private def initializer(sym: Symbol)(implicit ctx: Context): TermSymbol = {
115-
val initName = if(!sym.is(Lazy)) InitializerName(sym.name.asTermName) else sym.name.asTermName
116-
sym.owner.info.decl(initName).suchThat(_.is(Lazy) == sym.is(Lazy)).symbol
117-
.orElse(
118-
ctx.newSymbol(
119-
sym.owner,
120-
initName,
121-
Protected | Synthetic | Method,
122-
sym.info,
123-
coord = sym.symbol.coord).enteredAfter(thisTransform))
124-
.asTerm
125-
}
115+
if (sym is Lazy) sym
116+
else {
117+
val initName = InitializerName(sym.name.asTermName)
118+
sym.owner.info.decl(initName).symbol
119+
.orElse(
120+
ctx.newSymbol(
121+
sym.owner,
122+
initName,
123+
Protected | Synthetic | Method,
124+
sym.info,
125+
coord = sym.symbol.coord).enteredAfter(thisTransform))
126+
}
127+
}.asTerm
126128

127129
override def transformTemplate(impl: Template)(implicit ctx: Context, info: TransformerInfo) = {
128130
val cls = impl.symbol.owner.asClass

0 commit comments

Comments
 (0)