Skip to content

Commit 87b779b

Browse files
committed
Change typer to infer repeated param instead of Seq in _* cases
1 parent cf2ae5e commit 87b779b

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/dotty/tools/dotc/transform/PatternMatcher.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1094,6 +1094,7 @@ class PatternMatcher extends MiniPhaseTransform with DenotTransformer {thisTrans
10941094
*/
10951095
object WildcardPattern {
10961096
def unapply(pat: Tree): Boolean = pat match {
1097+
case Typed(_, arg) if arg.tpe.isRepeatedParam => true
10971098
case Bind(nme.WILDCARD, WildcardPattern()) => true // don't skip when binding an interesting symbol!
10981099
case t if (tpd.isWildcardArg(t)) => true
10991100
case x: Ident => isVarPattern(x)
@@ -1157,8 +1158,8 @@ class PatternMatcher extends MiniPhaseTransform with DenotTransformer {thisTrans
11571158

11581159
object TypeBound {
11591160
def unapply(tree: Tree): Option[Type] = tree match {
1160-
case Typed(_, _) => Some(tree.typeOpt)
1161-
case _ => None
1161+
case Typed(_, arg) if !arg.tpe.isRepeatedParam => Some(tree.typeOpt)
1162+
case _ => None
11621163
}
11631164
}
11641165

src/dotty/tools/dotc/typer/Typer.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,8 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit
427427
}
428428
if (untpd.isWildcardStarArg(tree))
429429
cases(
430-
ifPat = ascription(TypeTree(defn.SeqType.appliedTo(pt :: Nil)), isWildcard = true),
430+
//ifPat = ascription(TypeTree(defn.SeqType.appliedTo(pt :: Nil)), isWildcard = true),
431+
ifPat = ascription(TypeTree(defn.RepeatedParamType.appliedTo(pt)), isWildcard = true),
431432
ifExpr = seqToRepeated(typedExpr(tree.expr, defn.SeqType)),
432433
wildName = nme.WILDCARD_STAR)
433434
else {

0 commit comments

Comments
 (0)