blob: 128ca767c87f8acfa243916637805f8035c14818 (
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
|
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
}
|