diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-10-29 17:26:13 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-11-22 20:10:19 +0100 |
commit | cbe4f0a44739a26cfddc45bea33fee6246a240f5 (patch) | |
tree | 42f19ab80633e7988a63d78a040c7e0f110e202c /src | |
parent | 9bcb3a0bf17352efa22bd50c5d8738b79eeae72c (diff) | |
download | dotty-cbe4f0a44739a26cfddc45bea33fee6246a240f5.tar.gz dotty-cbe4f0a44739a26cfddc45bea33fee6246a240f5.tar.bz2 dotty-cbe4f0a44739a26cfddc45bea33fee6246a240f5.zip |
Fix underlyingIfRepeated always assuming Scala repeated.
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/core/TypeApplications.scala | 7 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/ElimRepeated.scala | 7 |
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)) |