Skip to content

Commit 69f67bd

Browse files
committed
Fix trait setter to getter lookup.
1 parent d2bad83 commit 69f67bd

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

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

+10-1
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,17 @@ class Memoize extends MiniPhase with IdentityDenotTransformer { thisPhase =>
115115
EmptyTree
116116
}
117117

118+
def traitSetterGetter: Symbol =
119+
/* We have to compare SimpleNames here, because the setter name only
120+
* embed the original getter's simple name, not its semantic name.
121+
*/
122+
val getterSimpleName = sym.asTerm.name.getterName
123+
sym.owner.info.decls.find { getter =>
124+
getter.is(Accessor) && getter.asTerm.name.toSimpleName == getterSimpleName
125+
}
126+
118127
if (sym.is(Accessor, butNot = NoFieldNeeded)
119-
&& (!sym.name.is(TraitSetterName) || sym.getter.is(Accessor, butNot = NoFieldNeeded))) {
128+
&& (!sym.name.is(TraitSetterName) || traitSetterGetter.is(Accessor, butNot = NoFieldNeeded))) {
120129
val field = sym.field.orElse(newField).asTerm
121130

122131
def adaptToField(tree: Tree): Tree =

0 commit comments

Comments
 (0)