File tree 2 files changed +10
-4
lines changed
compiler/src/dotty/tools/dotc
2 files changed +10
-4
lines changed Original file line number Diff line number Diff line change @@ -259,9 +259,13 @@ object NameOps {
259
259
def setterName : TermName = name.exclude(FieldName ) ++ str.SETTER_SUFFIX
260
260
261
261
def getterName : TermName =
262
- name.exclude(FieldName ).mapLast(n =>
263
- if (n.endsWith(str.SETTER_SUFFIX )) n.take(n.length - str.SETTER_SUFFIX .length).asSimpleName
264
- else n)
262
+ if name.is(TraitSetterName ) then
263
+ val TraitSetterName (_, original) = name
264
+ original.getterName
265
+ else
266
+ name.exclude(FieldName ).mapLast(n =>
267
+ if (n.endsWith(str.SETTER_SUFFIX )) n.take(n.length - str.SETTER_SUFFIX .length).asSimpleName
268
+ else n)
265
269
266
270
def fieldName : TermName =
267
271
if (name.isSetterName)
Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ import SymUtils._
11
11
import Constants ._
12
12
import ast .Trees ._
13
13
import MegaPhase ._
14
+ import NameKinds .TraitSetterName
14
15
import NameOps ._
15
16
import Flags ._
16
17
import Decorators ._
@@ -114,7 +115,8 @@ class Memoize extends MiniPhase with IdentityDenotTransformer { thisPhase =>
114
115
EmptyTree
115
116
}
116
117
117
- if (sym.is(Accessor , butNot = NoFieldNeeded )) {
118
+ if (sym.is(Accessor , butNot = NoFieldNeeded )
119
+ && (! sym.name.is(TraitSetterName ) || sym.getter.is(Accessor , butNot = NoFieldNeeded ))) {
118
120
val field = sym.field.orElse(newField).asTerm
119
121
120
122
def adaptToField (tree : Tree ): Tree =
You can’t perform that action at this time.
0 commit comments