@@ -981,19 +981,23 @@ class Typer(@constructorOnly nestingLevel: Int = 0) extends Namer
981
981
}
982
982
983
983
if (untpd.isWildcardStarArg(tree)) {
984
+
985
+ def fromRepeated (pt : Type ): Type = pt match
986
+ case pt : FlexibleType =>
987
+ pt.derivedFlexibleType(fromRepeated(pt.hi))
988
+ case _ =>
989
+ if ctx.mode.isQuotedPattern then
990
+ // FIXME(#8680): Quoted patterns do not support Array repeated arguments
991
+ pt.translateFromRepeated(toArray = false , translateWildcard = true )
992
+ else
993
+ pt.translateFromRepeated(toArray = false , translateWildcard = true )
994
+ | pt.translateFromRepeated(toArray = true , translateWildcard = true )
995
+
984
996
def typedWildcardStarArgExpr = {
985
997
// A sequence argument `xs: _*` can be either a `Seq[T]` or an `Array[_ <: T]`,
986
998
// irrespective of whether the method we're calling is a Java or Scala method,
987
999
// so the expected type is the union `Seq[T] | Array[_ <: T]`.
988
- val pt1 = pt.stripFlexible
989
- val ptArg0 =
990
- // FIXME(#8680): Quoted patterns do not support Array repeated arguments
991
- if ctx.mode.isQuotedPattern then
992
- pt1.translateFromRepeated(toArray = false , translateWildcard = true )
993
- else
994
- pt1.translateFromRepeated(toArray = false , translateWildcard = true )
995
- | pt1.translateFromRepeated(toArray = true , translateWildcard = true )
996
- val ptArg = if pt1 eq pt then ptArg0 else FlexibleType (ptArg0)
1000
+ val ptArg = fromRepeated(pt)
997
1001
val expr0 = typedExpr(tree.expr, ptArg)
998
1002
val expr1 = if ctx.explicitNulls && (! ctx.mode.is(Mode .Pattern )) then
999
1003
if expr0.tpe.isNullType then
0 commit comments