Skip to content

Commit 34484dc

Browse files
committed
add gadt cases that can't be handled
1 parent ca78bc2 commit 34484dc

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

tests/patmat/gadt2.scala.ignore

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
sealed trait Nat[+T]
2+
case class Zero() extends Nat[Nothing]
3+
case class Succ[T]() extends Nat[T]
4+
5+
sealed trait Vect[+N <: Nat[_], +T]
6+
case class VN[T]() extends Vect[Zero, T]
7+
case class VC[T, N <: Nat[_]](x: T, xs: Vect[N, T]) extends Vect[Succ[N], T]
8+
9+
object Test {
10+
def foo[N <: Nat[_], A, B](v1: Vect[N, A], v2: Vect[N, B]) = (v1, v2) match {
11+
case (VN(), VN()) => 1
12+
case (VC(x, xs), VC(y, ys)) => 2
13+
}
14+
}

tests/patmat/gadt3.scala.ignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
sealed trait Expr[T]
2+
case class IntExpr(x: Int) extends Expr[Int]
3+
case class BooleanExpr(b: Boolean) extends Expr[Boolean]
4+
5+
object Test {
6+
def foo[T](x: Expr[T], y: Expr[T]) = (x, y) match {
7+
case (IntExpr(_), IntExpr(_)) =>
8+
case (BooleanExpr(_), BooleanExpr(_)) =>
9+
}
10+
}

0 commit comments

Comments
 (0)