aboutsummaryrefslogblamecommitdiff
path: root/tests/run/t1500c.scala
blob: 5c33b7a2f3d8f1ec8cd6581945d279bd13cca21b (plain) (tree)


















                                                                                              
sealed trait HList
sealed trait HNil extends HList
sealed trait ::[H, T <: HList] extends HList

case class Size[L <: HList](value: Int)

object Size {
  implicit val caseHNil: Size[HNil] = Size(0)
  implicit def caseHCons[H, T <: HList](implicit e: Size[T]): Size[H :: T] = Size(e.value + 1)
}

object Test {
  def main(args: Array[String]): Unit = {
    assert(implicitly[Size[HNil]].value == 0)
    assert(implicitly[Size[Int :: HNil]].value == 1)
    assert(implicitly[Size[Int :: Int :: HNil]].value == 2)
    assert(implicitly[Size[Int :: Int :: Int :: HNil]].value == 3)
  }
}