@@ -25,6 +25,7 @@ import reporting.*
25
25
import Nullables .* , NullOpsDecorator .*
26
26
import config .{Feature , MigrationVersion , SourceVersion }
27
27
import util .Property
28
+ import util .chaining .tap
28
29
29
30
import collection .mutable
30
31
import config .Printers .{overload , typr , unapp }
@@ -814,19 +815,17 @@ trait Applications extends Compatibility {
814
815
addTyped(arg)
815
816
case _ =>
816
817
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
828
826
typedArg(arg, elemFormal)
829
- typedArgs.foreach(addArg(_, elemFormal))
827
+ typedArgs.foreach: targ =>
828
+ addArg(targ, if typedVarArgs.contains(targ) then formal else elemFormal)
830
829
makeVarArg(args.length, elemFormal)
831
830
}
832
831
else args match {
@@ -2704,7 +2703,8 @@ trait Applications extends Compatibility {
2704
2703
case ConstantType (c : Constant ) if c.tag == IntTag =>
2705
2704
targetClass(ts1, cls, true )
2706
2705
case t =>
2707
- val sym = t.classSymbol
2706
+ val sym =
2707
+ if t.isRepeatedParam then t.argTypesLo.head.classSymbol else t.classSymbol
2708
2708
if (! sym.isNumericValueClass || cls.exists && cls != sym) NoSymbol
2709
2709
else targetClass(ts1, sym, intLitSeen)
2710
2710
}
0 commit comments