summaryrefslogtreecommitdiff
path: root/test/files/neg/hkgadt.scala
blob: 0107d2bdde313412480ab5513fb96d41aae75aaa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
object HKGADT {
  sealed trait Foo[F[_]]
  final case class Bar() extends Foo[List]

  def frob[F[_]](foo: Foo[F]): F[Int] =
    foo match {
      case Bar() => Set(1)
    }

  sealed trait Foo1[F]
  final case class Bar1() extends Foo1[Int]
  def frob1[A](foo: Foo1[A]): A = foo match {
    case Bar1() => true
  }
}

object HKGADT2 {
  sealed trait Foo[F[_]]
  final case class Bar() extends Foo[List]
  final case class Baz() extends Foo[Set]

  def frob[F[_]](foo: Foo[F]): F[Int] =
    foo match {
      case Bar() => Set(1)
      case Baz() => List(1)
    }

  sealed trait Foo1[F]
  final case class Bar1() extends Foo1[Int]
  final case class Baz1() extends Foo1[Boolean]
  def frob1[A](foo: Foo1[A]): A = foo match {
    case Bar1() => true
    case Baz1() => 1
  }
}