aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/ast/TreeInfo.scala1
-rw-r--r--src/dotty/tools/dotc/core/Definitions.scala5
-rw-r--r--src/dotty/tools/dotc/core/StdNames.scala1
-rw-r--r--src/dotty/tools/dotc/core/Types.scala14
-rw-r--r--src/dotty/tools/dotc/core/pickling/UnPickler.scala4
5 files changed, 10 insertions, 15 deletions
diff --git a/src/dotty/tools/dotc/ast/TreeInfo.scala b/src/dotty/tools/dotc/ast/TreeInfo.scala
index 1354f7375..cc3e53abc 100644
--- a/src/dotty/tools/dotc/ast/TreeInfo.scala
+++ b/src/dotty/tools/dotc/ast/TreeInfo.scala
@@ -175,7 +175,6 @@ trait TreeInfo[T >: Untyped <: Type] { self: Trees.Instance[T] =>
def isRepeatedParamType(tpt: Tree)(implicit ctx: Context) = tpt match {
case tpt: TypeTree => tpt.typeOpt.isRepeatedParam
case AppliedTypeTree(Select(_, tpnme.REPEATED_PARAM_CLASS), _) => true
- case AppliedTypeTree(Select(_, tpnme.JAVA_REPEATED_PARAM_CLASS), _) => true
case _ => false
}
diff --git a/src/dotty/tools/dotc/core/Definitions.scala b/src/dotty/tools/dotc/core/Definitions.scala
index 594f0c013..9c479de73 100644
--- a/src/dotty/tools/dotc/core/Definitions.scala
+++ b/src/dotty/tools/dotc/core/Definitions.scala
@@ -235,7 +235,6 @@ class Definitions {
lazy val EqualsPatternClass = specialPolyClass(tpnme.EQUALS_PATTERN, EmptyFlags, AnyType)
lazy val RepeatedParamClass = specialPolyClass(tpnme.REPEATED_PARAM_CLASS, Covariant, SeqType)
- lazy val JavaRepeatedParamClass = specialPolyClass(tpnme.JAVA_REPEATED_PARAM_CLASS, Covariant, ArrayClass.typeRef)
// fundamental classes
lazy val StringClass = ctx.requiredClass("java.lang.String")
@@ -327,7 +326,6 @@ class Definitions {
def PairType: Type = PairClass.typeRef
def StringType: Type = StringClass.typeRef
def RepeatedParamType = RepeatedParamClass.typeRef
- def JavaRepeatedParamType = JavaRepeatedParamClass.typeRef
def ThrowableType = ThrowableClass.typeRef
def OptionType = OptionClass.typeRef
def VolatileAnnotType = VolatileAnnot.typeRef
@@ -396,8 +394,6 @@ class Definitions {
lazy val TupleClasses: Set[Symbol] = TupleClass.toSet
lazy val ProductClasses: Set[Symbol] = ProductNClass.toSet
- lazy val RepeatedParamClasses: Set[Symbol] = Set(RepeatedParamClass, JavaRepeatedParamClass)
-
/** `Modules whose members are in the default namespace and their module classes */
lazy val UnqualifiedOwners = RootImports.toSet ++ RootImports.map(_.moduleClass)
@@ -554,7 +550,6 @@ class Definitions {
AnyClass,
AnyRefAlias,
RepeatedParamClass,
- JavaRepeatedParamClass,
ByNameParamClass2x,
AnyValClass,
NullClass,
diff --git a/src/dotty/tools/dotc/core/StdNames.scala b/src/dotty/tools/dotc/core/StdNames.scala
index 3ab0ec36e..91a77a2a8 100644
--- a/src/dotty/tools/dotc/core/StdNames.scala
+++ b/src/dotty/tools/dotc/core/StdNames.scala
@@ -160,7 +160,6 @@ object StdNames {
final val BYNAME_PARAM_CLASS: N = "<byname>"
final val EQUALS_PATTERN: N = "<equals>"
- final val JAVA_REPEATED_PARAM_CLASS: N = "<repeated...>"
final val LOCAL_CHILD: N = "<local child>"
final val REPEATED_PARAM_CLASS: N = "<repeated>"
final val WILDCARD_STAR: N = "_*"
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala
index 8149cce78..a37b872d2 100644
--- a/src/dotty/tools/dotc/core/Types.scala
+++ b/src/dotty/tools/dotc/core/Types.scala
@@ -156,7 +156,7 @@ object Types {
/** Is this a type of a repeated parameter? */
def isRepeatedParam(implicit ctx: Context): Boolean =
- defn.RepeatedParamClasses contains typeSymbol
+ typeSymbol eq defn.RepeatedParamClass
/** Is this an alias TypeBounds? */
def isAlias: Boolean = this match {
@@ -623,11 +623,13 @@ object Types {
if ((this isRef defn.ObjectClass) && !ctx.phase.erasedTypes) defn.AnyType else this
/** If this is repeated parameter type, its underlying Seq type,
- * else the type itself.
+ * or, if isJava is true, Array type, else the type itself.
*/
- def underlyingIfRepeated(implicit ctx: Context): Type = this match {
- case rt @ RefinedType(tref: TypeRef, name) if defn.RepeatedParamClasses contains tref.symbol =>
- RefinedType(defn.SeqClass.typeRef, name, rt.refinedInfo)
+ def underlyingIfRepeated(isJava: Boolean)(implicit ctx: Context): Type = this match {
+ case rt @ RefinedType(tref: TypeRef, name) if tref.isRepeatedParam =>
+ RefinedType(
+ (if (isJava) defn.ArrayClass else defn.SeqClass).typeRef,
+ name, rt.refinedInfo)
case _ =>
this
}
@@ -867,7 +869,7 @@ object Types {
*/
def toFunctionType(implicit ctx: Context): Type = this match {
case mt @ MethodType(_, formals) if !mt.isDependent =>
- defn.FunctionType(formals mapConserve (_.underlyingIfRepeated), mt.resultType)
+ defn.FunctionType(formals mapConserve (_.underlyingIfRepeated(mt.isJava)), mt.resultType)
}
/** The signature of this type. This is by default NotAMethod,
diff --git a/src/dotty/tools/dotc/core/pickling/UnPickler.scala b/src/dotty/tools/dotc/core/pickling/UnPickler.scala
index 36b2c99bf..de3f626da 100644
--- a/src/dotty/tools/dotc/core/pickling/UnPickler.scala
+++ b/src/dotty/tools/dotc/core/pickling/UnPickler.scala
@@ -70,7 +70,7 @@ object UnPickler {
}
/** Convert array parameters denoting a repeated parameter of a Java method
- * to `JavaRepeatedParamClass` types.
+ * to `RepeatedParamClass` types.
*/
def arrayToRepeated(tp: Type)(implicit ctx: Context): Type = tp match {
case tp @ MethodType(paramNames, paramTypes) =>
@@ -85,7 +85,7 @@ object UnPickler {
}
tp.derivedMethodType(
paramNames,
- paramTypes.init :+ defn.JavaRepeatedParamType.appliedTo(elemtp),
+ paramTypes.init :+ defn.RepeatedParamType.appliedTo(elemtp),
tp.resultType)
case tp @ PolyType(paramNames) =>
tp.derivedPolyType(paramNames, tp.paramBounds, arrayToRepeated(tp.resultType))