@@ -1060,11 +1060,12 @@ abstract class Mixin extends InfoTransform with ast.TreeDSL {
1060
1060
isOverriddenAccessor(other.getterIn(other.owner), clazz.info.baseClasses)
1061
1061
}
1062
1062
1063
+ // Emitting code for Function[0|1|2]
1063
1064
if (isFunctionSymbol(clazz) && clazz.isSpecialized) {
1064
1065
val sym = clazz.info.decl(nme.apply)
1065
1066
// <default> def apply(v1: Object)Object = apply(v1.unbox).box
1066
1067
val functionClass = clazz.baseClasses(1 )
1067
- val genericApply = functionClass.info.member(nme.apply)
1068
+ val genericApply = functionClass.info.member(nme.apply) // why `member` and not `decl`?
1068
1069
val bridge = genericApply.cloneSymbol(clazz, /* BRIDGE |*/ METHOD | JAVA_DEFAULTMETHOD | DEFERRED ).setPos(sym.pos)
1069
1070
addDefDef(bridge,
1070
1071
Apply (gen.mkAttributedSelect(gen.mkAttributedThis(sym.owner), sym), bridge.paramss.head.map(p => gen.mkAttributedIdent(p))))
@@ -1183,11 +1184,12 @@ abstract class Mixin extends InfoTransform with ast.TreeDSL {
1183
1184
qual
1184
1185
1185
1186
case dd @ DefDef (_, _, _, vparamss, _, EmptyTree ) if isFunctionSymbol(sym.owner) =>
1187
+ // why only exclude toString?
1186
1188
val addDefault = enteringPhase(currentRun.erasurePhase.prev)(! sym.isDeferred) && sym.name != nme.toString_ // before lateDEFERRED
1187
1189
if (addDefault) {
1188
1190
def implSym = implClass(sym.owner).info.member(sym.name)
1189
1191
sym.setFlag(Flags .JAVA_DEFAULTMETHOD )
1190
- val tree = Apply (staticRef(implSym), gen.mkAttributedThis(sym.owner) :: sym.paramss.head.map(gen.mkAttributedRef ))
1192
+ val tree = Apply (staticRef(implSym), gen.mkAttributedThis(sym.owner) :: sym.paramss.head.map(gen.mkAttributedIdent ))
1191
1193
val app = typedPos(tree.pos)(tree)
1192
1194
copyDefDef(dd)(rhs = app)
1193
1195
} else if (sym.owner.isSpecialized && sym.name == nme.apply) {
0 commit comments