@@ -25,6 +25,7 @@ import reporting.*
2525import Nullables .* , NullOpsDecorator .*
2626import config .{Feature , MigrationVersion , SourceVersion }
2727import util .Property
28+ import util .chaining .tap
2829
2930import collection .mutable
3031import config .Printers .{overload , typr , unapp }
@@ -814,19 +815,17 @@ trait Applications extends Compatibility {
814815 addTyped(arg)
815816 case _ =>
816817 val elemFormal = formal.widenExpr.argTypesLo.head
817- if Feature .enabled(Feature .multiSpreads)
818- && ! ctx.isAfterTyper && args.exists(isVarArg)
819- then
820- args.foreach: arg =>
821- if isVarArg(arg)
822- then addArg(typedArg(arg, formal), formal)
823- else addArg(typedArg(arg, elemFormal), elemFormal)
824- else
825- val typedArgs = harmonic(harmonizeArgs, elemFormal):
826- args.map: arg =>
827- checkNoVarArg(arg)
818+ val typedVarArgs = util.HashSet [TypedArg ]()
819+ val typedArgs = harmonic(harmonizeArgs, elemFormal):
820+ args.map: arg =>
821+ if isVarArg(arg) then
822+ if ! Feature .enabled(Feature .multiSpreads) || ctx.isAfterTyper then
823+ checkNoVarArg(arg)
824+ typedArg(arg, formal).tap(typedVarArgs += _)
825+ else
828826 typedArg(arg, elemFormal)
829- typedArgs.foreach(addArg(_, elemFormal))
827+ typedArgs.foreach: targ =>
828+ addArg(targ, if typedVarArgs.contains(targ) then formal else elemFormal)
830829 makeVarArg(args.length, elemFormal)
831830 }
832831 else args match {
@@ -2704,7 +2703,8 @@ trait Applications extends Compatibility {
27042703 case ConstantType (c : Constant ) if c.tag == IntTag =>
27052704 targetClass(ts1, cls, true )
27062705 case t =>
2707- val sym = t.classSymbol
2706+ val sym =
2707+ if t.isRepeatedParam then t.argTypesLo.head.classSymbol else t.classSymbol
27082708 if (! sym.isNumericValueClass || cls.exists && cls != sym) NoSymbol
27092709 else targetClass(ts1, sym, intLitSeen)
27102710 }
0 commit comments