aboutsummaryrefslogblamecommitdiff
path: root/tests/patmat/gadt2.scala.ignore
blob: 80ba72c70884d6c9f0ddab2f524cd074ac2cebe5 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                                                               
sealed trait Nat[+T]
case class Zero() extends Nat[Nothing]
case class Succ[T]() extends Nat[T]

sealed trait Vect[+N <: Nat[_], +T]
case class VN[T]() extends Vect[Zero, T]
case class VC[T, N <: Nat[_]](x: T, xs: Vect[N, T]) extends Vect[Succ[N], T]

object Test {
  def foo[N <: Nat[_], A, B](v1: Vect[N, A], v2: Vect[N, B]) = (v1, v2) match {
    case (VN(), VN()) => 1
    case (VC(x, xs), VC(y, ys)) => 2
  }
}