summaryrefslogblamecommitdiff
path: root/test/files/run/t8575.scala
blob: fb8f603f3e5932aed0d83e3b6a173e1b129a9056 (plain) (tree)






















                                                                               
                             

                                                        


                                 
                  

   
class E[F]
class A
class B
class C

trait TypeMember {
  type X

  // This call throws an AbstractMethodError, because it invokes the erasure of
  // consume(X): Unit that is consume(Object): Unit. But the corresponding
  // bridge method is not generated.
  consume(value)

  def value: X
  def consume(x: X): Unit
}

object Test extends TypeMember {
  type F = A with B

  // works if replaced by type X = E[A with B with C]
  type X = E[F with C]

  def value = new E[F with C]

  // This call passes, since it invokes consume(E): Unit
  def consume(x: X) {}

  def main(args: Array[String]) {
    consume(value)
  }
}