Skip to content

Commit bbeb20d

Browse files
authored
Add fixed GADT exhaustivity test cases (#16169)
2 parents 3636ee6 + c406ace commit bbeb20d

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

tests/pos/i7424.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// scalac: -Werror
2+
object GADT {
3+
import =:=._
4+
5+
enum =:=[A, B] {
6+
case Refl[C]() extends (C =:= C)
7+
}
8+
9+
def unwrap[A,B](opt: Option[A])(using ev: A =:= Option[B]): Option[B] = ev match {
10+
case Refl() => opt.flatMap(identity[Option[B]])
11+
}
12+
}

tests/pos/i7424b.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// scalac: -Werror
2+
object GADT {
3+
import =:=._
4+
5+
enum =:=[A, B] {
6+
case Refl[C]() extends (C =:= C)
7+
}
8+
9+
def unwrap[A,B](opt: Option[A])(using ev: A =:= Option[B]): Option[B] = ev match {
10+
case _: Refl[?] => opt.flatMap(identity[Option[B]])
11+
}
12+
}

tests/pos/i7424c.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// scalac: -Werror
2+
object Main extends App:
3+
enum Extends[A, B]:
4+
case Ev[B, A <: B]() extends (A Extends B)
5+
6+
def cast(a: A): B = this match {
7+
case Extends.Ev() => a
8+
}

0 commit comments

Comments
 (0)