Skip to content

Commit 71f5b3a

Browse files
committed
Fix #8757: check wildcard star patterns by tree instead of type
1 parent 66f335c commit 71f5b3a

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

compiler/src/dotty/tools/dotc/transform/patmat/Space.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,8 +481,8 @@ class SpaceEngine(implicit ctx: Context) extends SpaceLogic {
481481
def projectSeq(pats: List[Tree]): Space = {
482482
if (pats.isEmpty) return Typ(scalaNilType, false)
483483

484-
val (items, zero) = if (pats.last.tpe.isRepeatedParam)
485-
(pats.init, Typ(scalaListType.appliedTo(pats.last.tpe.argTypes.head), false))
484+
val (items, zero) = if (isWildcardStarArg(pats.last))
485+
(pats.init, Typ(scalaListType.appliedTo(pats.last.tpe.elemType), false))
486486
else
487487
(pats, Typ(scalaNilType, false))
488488

tests/patmat/i8757.check

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
8: Pattern Match Exhaustivity: C()

tests/patmat/i8757.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
sealed trait T
2+
3+
case class C(xs: Int*) extends T
4+
5+
def f(): Unit = (C(42): T) match { case C(xs: _*) => }
6+
def g(): Unit = (C(42): T) match { case C(_: _*) => }
7+
8+
def h(): Unit = (C(42): T) match
9+
case C(5, _: _*) =>
10+
case C(x, xs: _*) =>

0 commit comments

Comments
 (0)