aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/core/TypeApplications.scala7
-rw-r--r--src/dotty/tools/dotc/transform/ElimRepeated.scala7
2 files changed, 9 insertions, 5 deletions
diff --git a/src/dotty/tools/dotc/core/TypeApplications.scala b/src/dotty/tools/dotc/core/TypeApplications.scala
index bf756facf..3808cb17c 100644
--- a/src/dotty/tools/dotc/core/TypeApplications.scala
+++ b/src/dotty/tools/dotc/core/TypeApplications.scala
@@ -283,9 +283,12 @@ class TypeApplications(val self: Type) extends AnyVal {
/** If this is repeated parameter type, its underlying Seq type,
* or, if isJava is true, Array type, else the type itself.
*/
- def underlyingIfRepeated(isJava: Boolean)(implicit ctx: Context): Type =
- if (self.isRepeatedParam) translateParameterized(defn.RepeatedParamClass, defn.SeqClass)
+ def underlyingIfRepeated(isJava: Boolean)(implicit ctx: Context): Type = {
+ if (self.isRepeatedParam)
+ if (isJava) translateParameterized(defn.RepeatedParamClass, defn.ArrayClass)
+ else translateParameterized(defn.RepeatedParamClass, defn.SeqClass)
else self
+ }
/** If this is an encoding of a (partially) applied type, return its arguments,
* otherwise return Nil.
diff --git a/src/dotty/tools/dotc/transform/ElimRepeated.scala b/src/dotty/tools/dotc/transform/ElimRepeated.scala
index 7f2492d3c..ba2de659f 100644
--- a/src/dotty/tools/dotc/transform/ElimRepeated.scala
+++ b/src/dotty/tools/dotc/transform/ElimRepeated.scala
@@ -63,9 +63,10 @@ class ElimRepeated extends MiniPhaseTransform with InfoTransformer { thisTransfo
case tp @ MethodType(paramNames, paramTypes) =>
val resultType1 = elimRepeated(tp.resultType)
val paramTypes1 =
- if (paramTypes.nonEmpty && paramTypes.last.isRepeatedParam)
- paramTypes.init :+ paramTypes.last.underlyingIfRepeated(tp.isJava)
- else paramTypes
+ if (paramTypes.nonEmpty && paramTypes.last.isRepeatedParam) {
+ val last = paramTypes.last.underlyingIfRepeated(tp.isJava)
+ paramTypes.init :+ last
+ } else paramTypes
tp.derivedMethodType(paramNames, paramTypes1, resultType1)
case tp: PolyType =>
tp.derivedPolyType(tp.paramNames, tp.paramBounds, elimRepeated(tp.resultType))