summaryrefslogtreecommitdiff
path: root/test/files/pos/t4853.scala
blob: c91f2d6b05956010ca1f5c4ea54f4428432e202e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
object Animal {
  def main(args: Array[String]) { new Animal[Awake].goToSleep }
}

class Animal[A <: AwakeOrAsleep] {
  def goToSleep[B >: A <: Awake]: Animal[Asleep] = new Animal[Asleep]
  def wakeUp[B >: A <: Asleep]: Animal[Awake] = new Animal[Awake]
}

sealed trait AwakeOrAsleep
trait Awake extends AwakeOrAsleep
trait Asleep extends AwakeOrAsleep