@@ -461,9 +461,11 @@ object Erasure {
461
461
ref(meth).appliedToArgs(args.toList ++ followingArgs)
462
462
}
463
463
464
- private def protoArgs (pt : Type , tp : Type ): List [untpd.Tree ] = (pt, tp) match {
465
- case (pt : FunProto , tp : MethodType ) if tp.isUnusedMethod => protoArgs(pt.resType, tp.resType)
466
- case (pt : FunProto , tp : MethodType ) => pt.args ++ protoArgs(pt.resType, tp.resType)
464
+ private def protoArgs (pt : Type , methTp : Type ): List [untpd.Tree ] = (pt, methTp) match {
465
+ case (pt : FunProto , methTp : MethodType ) if methTp.isUnusedMethod =>
466
+ protoArgs(pt.resType, methTp.resType)
467
+ case (pt : FunProto , methTp : MethodType ) =>
468
+ pt.args ++ protoArgs(pt.resType, methTp.resType)
467
469
case _ => Nil
468
470
}
469
471
@@ -497,9 +499,8 @@ object Erasure {
497
499
fun1.tpe.widen match {
498
500
case mt : MethodType =>
499
501
val outers = outer.args(fun.asInstanceOf [tpd.Tree ]) // can't use fun1 here because its type is already erased
500
- var args0 = protoArgs(pt, tree.typeOpt)
501
- if (mt.paramNames.nonEmpty && ! mt.isUnusedMethod) args0 = args ::: args0
502
- args0 = outers ::: args0
502
+ val ownArgs = if (mt.paramNames.nonEmpty && ! mt.isUnusedMethod) args else Nil
503
+ var args0 = outers ::: ownArgs ::: protoArgs(pt, tree.typeOpt)
503
504
504
505
if (args0.length > MaxImplementedFunctionArity && mt.paramInfos.length == 1 ) {
505
506
val bunchedArgs = untpd.JavaSeqLiteral (args0, TypeTree (defn.ObjectType ))
0 commit comments