aboutsummaryrefslogblamecommitdiff
path: root/tests/pos/tycons.scala
blob: 1ed4d2855247e5d4d1d70d208ab1e6113cc3f264 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                                            
                                              


                                                                    
                                          
                                                                                         

 
class TypeConstructor {
  type TypeArg
}

trait List[+T] extends TypeConstructor { type TypeArg <: T }

trait Set[T] extends TypeConstructor { type TypeArg <: T }

object obj extends List[Number] with Set[Exception] {
  val x: TypeArg = ???
  val n: Number = x
  val e: Exception = x
}

abstract class Functor[F <: TypeConstructor] {
  def map[A, B](f: F { type TypeArg <: A }): F { type TypeArg <: B }
}

object ListFunctor extends Functor[List] {
  override def map[A, B](f: List { type TypeArg <: A }): List { type TypeArg <: B } = ???
}