Skip to content

Commit d52125b

Browse files
committed
Revert 3c4b6bd
This is not necessary anymore after scala#5403
1 parent 85ed29c commit d52125b

File tree

2 files changed

+18
-22
lines changed

2 files changed

+18
-22
lines changed

compiler/src/dotty/tools/dotc/transform/ElimRepeated.scala

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -71,29 +71,23 @@ class ElimRepeated extends MiniPhase with InfoTransformer { thisPhase =>
7171
transformTypeOfTree(tree)
7272

7373
override def transformApply(tree: Apply)(implicit ctx: Context): Tree = {
74-
val formals =
75-
ctx.atPhase(thisPhase) { implicit ctx =>
76-
tree.fun.tpe.widen.asInstanceOf[MethodType].paramInfos
77-
}
78-
val args1 = tree.args.zipWithConserve(formals) { (arg, formal) =>
79-
arg match {
80-
case arg: Typed if isWildcardStarArg(arg) =>
81-
val isJavaDefined = tree.fun.symbol.is(JavaDefined)
82-
val tpe = arg.expr.tpe
83-
if (isJavaDefined && tpe.derivesFrom(defn.SeqClass))
84-
seqToArray(arg.expr, formal.underlyingIfRepeated(isJava = true))
85-
else if (!isJavaDefined && tpe.derivesFrom(defn.ArrayClass))
86-
arrayToSeq(arg.expr)
87-
else
88-
arg.expr
89-
case arg => arg
90-
}
74+
val args = tree.args.mapConserve {
75+
case arg: Typed if isWildcardStarArg(arg) =>
76+
val isJavaDefined = tree.fun.symbol.is(JavaDefined)
77+
val tpe = arg.expr.tpe
78+
if (isJavaDefined && tpe.derivesFrom(defn.SeqClass))
79+
seqToArray(arg.expr)
80+
else if (!isJavaDefined && tpe.derivesFrom(defn.ArrayClass))
81+
arrayToSeq(arg.expr)
82+
else
83+
arg.expr
84+
case arg => arg
9185
}
92-
transformTypeOfTree(cpy.Apply(tree)(tree.fun, args1))
86+
transformTypeOfTree(cpy.Apply(tree)(tree.fun, args))
9387
}
9488

95-
/** Convert sequence argument to Java array of type `pt` */
96-
private def seqToArray(tree: Tree, pt: Type)(implicit ctx: Context): Tree = tree match {
89+
/** Convert sequence argument to Java array */
90+
private def seqToArray(tree: Tree)(implicit ctx: Context): Tree = tree match {
9791
case SeqLiteral(elems, elemtpt) =>
9892
JavaSeqLiteral(elems, elemtpt)
9993
case _ =>
@@ -104,8 +98,6 @@ class ElimRepeated extends MiniPhase with InfoTransformer { thisPhase =>
10498
.select(nme.seqToArray)
10599
.appliedToType(elemType)
106100
.appliedTo(tree, Literal(Constant(elemClass.typeRef)))
107-
.ensureConforms(pt)
108-
// Because of phantomclasses, the Java array's type might not conform to the return type
109101
}
110102

111103
/** Convert Java array argument to Scala Seq */

tests/pos/repeatedArgs.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import scala.collection.{immutable, mutable}
22
import java.nio.file.Paths
3+
import java.util.concurrent.ForkJoinTask
34

45
class repeatedArgs {
56
def bar(xs: String*): Int = xs.length
@@ -19,4 +20,7 @@ class repeatedArgs {
1920
val x: collection.Seq[String] = others
2021
// val y: immutable.Seq[String] = others // ok in 2.13
2122
}
23+
24+
def invokeAll[T](tasks: ForkJoinTask[T]*): Unit = ForkJoinTask.invokeAll(tasks: _*)
25+
def invokeAll2(tasks: ForkJoinTask[_]*): Unit = ForkJoinTask.invokeAll(tasks: _*)
2226
}

0 commit comments

Comments
 (0)