Skip to content

Commit 12cc97f

Browse files
committed
Use underlyingIfRepeated
1 parent 280dcff commit 12cc97f

File tree

2 files changed

+3
-9
lines changed

2 files changed

+3
-9
lines changed

compiler/src/dotty/tools/dotc/core/TypeErasure.scala

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,17 +133,11 @@ object TypeErasure {
133133
erasureFn(isJava = false, semiEraseVCs = true, isConstructor = false, wildcardOK = false)(tp)(erasureCtx)
134134

135135
def sigName(tp: Type, isJava: Boolean)(implicit ctx: Context): TypeName = {
136-
val normTp = if (tp.isRepeatedParam) repeatedErased(tp, isJava) else tp
136+
val normTp = tp.underlyingIfRepeated(isJava)
137137
val erase = erasureFn(isJava, semiEraseVCs = false, isConstructor = false, wildcardOK = true)
138138
erase.sigName(normTp)(erasureCtx)
139139
}
140140

141-
/** Erases a repeated T* type into Seq[T] or Array[T] */
142-
def repeatedErased(tp: Type, isJava: Boolean)(implicit ctx: Context): Type = {
143-
val seqClass = if (isJava) defn.ArrayClass else defn.SeqClass
144-
tp.translateParameterized(defn.RepeatedParamClass, seqClass)
145-
}
146-
147141
/** The erasure of a top-level reference. Differs from normal erasure in that
148142
* TermRefs are kept instead of being widened away.
149143
*/
@@ -395,7 +389,7 @@ class TypeErasure(isJava: Boolean, semiEraseVCs: Boolean, isConstructor: Boolean
395389
else eraseNormalClassRef(tp)
396390
case tp: AppliedType =>
397391
if (tp.tycon.isRef(defn.ArrayClass)) eraseArray(tp)
398-
else if (tp.isRepeatedParam) apply(repeatedErased(tp, isJava))
392+
else if (tp.isRepeatedParam) apply(tp.underlyingIfRepeated(isJava))
399393
else apply(tp.superType)
400394
case _: TermRef | _: ThisType =>
401395
this(tp.widen)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class ElimRepeated extends MiniPhase with InfoTransformer { thisPhase =>
8282
arg match {
8383
case arg: Typed if isWildcardStarArg(arg) =>
8484
if (tree.fun.symbol.is(JavaDefined) && arg.expr.tpe.derivesFrom(defn.SeqClass))
85-
seqToArray(arg.expr, formal.translateParameterized(defn.RepeatedParamClass, defn.ArrayClass))
85+
seqToArray(arg.expr, formal.underlyingIfRepeated(isJava = true))
8686
else arg.expr
8787
case arg => arg
8888
}

0 commit comments

Comments
 (0)