@@ -71,29 +71,23 @@ class ElimRepeated extends MiniPhase with InfoTransformer { thisPhase =>
71
71
transformTypeOfTree(tree)
72
72
73
73
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
91
85
}
92
- transformTypeOfTree(cpy.Apply (tree)(tree.fun, args1 ))
86
+ transformTypeOfTree(cpy.Apply (tree)(tree.fun, args ))
93
87
}
94
88
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 {
97
91
case SeqLiteral (elems, elemtpt) =>
98
92
JavaSeqLiteral (elems, elemtpt)
99
93
case _ =>
@@ -104,8 +98,6 @@ class ElimRepeated extends MiniPhase with InfoTransformer { thisPhase =>
104
98
.select(nme.seqToArray)
105
99
.appliedToType(elemType)
106
100
.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
109
101
}
110
102
111
103
/** Convert Java array argument to Scala Seq */
0 commit comments