aboutsummaryrefslogblamecommitdiff
path: root/tests/pos/strip-tvars-for-lubbasetypes.scala
blob: 128ca767c87f8acfa243916637805f8035c14818 (plain) (tree)
1
2
3
4
5


                                                             

                                                                                     



















                                                                    
object Test {

  implicit final class EqualOps[T](val x: T) extends AnyVal {
    def ===[T1 >: T, Ph >: T <: T1, Ph2 >: Ph <: T1](other: T1): Boolean = x == other
    def !!![T1 >: T, Ph2 >: Ph <: T1, Ph >: T <: T1](other: T1): Boolean = x == other
  }

  class A
  class B extends A
  class C extends A

  val a = new A
  val b = new B
  val c = new C

  val x1 = a === b
  val x2 = b === a
  val x3 = b === c // error, infers Object{} for T1
  val x4 = b.===[A, B, B](c)

  val x5 = b !!! c // always compiled due to the order of Ph2 and Ph



}