@@ -182,8 +182,8 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform =>
182182 }
183183 }
184184
185- def wasDeferred (sym : Symbol ) =
186- ctx.atPhase(thisTransform) { implicit ctx => sym is Deferred }
185+ def was (sym : Symbol , flags : FlagSet ) =
186+ ctx.atPhase(thisTransform) { implicit ctx => sym is flags }
187187
188188 def traitInits (mixin : ClassSymbol ): List [Tree ] = {
189189 var argNum = 0
@@ -202,7 +202,7 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform =>
202202 EmptyTree
203203 }
204204
205- for (getter <- mixin.info.decls.filter(getr => getr .isGetter && ! wasDeferred(getr)).toList ) yield {
205+ for (getter <- mixin.info.decls.toList if getter .isGetter && ! was(getter, Deferred ) ) yield {
206206 val isScala2x = mixin.is(Scala2x )
207207 def default = Underscore (getter.info.resultType)
208208 def initial = transformFollowing(superRef(initializer(getter)).appliedToNone)
@@ -220,23 +220,23 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform =>
220220
221221 if (isCurrent(getter) || getter.is(ExpandedName )) {
222222 val rhs =
223- if (ctx.atPhase(thisTransform)( implicit ctx => getter.is( ParamAccessor ) )) nextArgument()
223+ if (was( getter, ParamAccessor )) nextArgument()
224224 else if (isScala2x)
225225 if (getter.is(Lazy , butNot = Module )) lazyGetterCall
226226 else if (getter.is(Module ))
227227 New (getter.info.resultType, List (This (cls)))
228228 else Underscore (getter.info.resultType)
229- else transformFollowing(superRef(initializer(getter)).appliedToNone)
229+ else initial
230230 // transformFollowing call is needed to make memoize & lazy vals run
231231 transformFollowing(DefDef (implementation(getter.asTerm), rhs))
232232 }
233- else if (isScala2x) EmptyTree
233+ else if (isScala2x || was(getter, ParamAccessor ) ) EmptyTree
234234 else initial
235235 }
236236 }
237237
238238 def setters (mixin : ClassSymbol ): List [Tree ] =
239- for (setter <- mixin.info.decls.filter(setr => setr.isSetter && ! wasDeferred (setr)).toList)
239+ for (setter <- mixin.info.decls.filter(setr => setr.isSetter && ! was (setr, Deferred )).toList)
240240 yield transformFollowing(DefDef (implementation(setter.asTerm), unitLiteral.withPos(cls.pos)))
241241
242242 cpy.Template (impl)(
0 commit comments