blob: 37b498fe3e1736f69fc66198b7dba9a68477f463 (
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
26
27
28
29
30
31
32
33
|
class Bippy { trait Foo[A] }
final class RichBippy[C <: Bippy with Singleton](val c1: C) {
def f: Int = 1
def f[A](x: A)(ev: c1.Foo[A]): Int = 2
def g[A <: Nothing](x: A): Int = 1
def g[A](x: A)(ev: c1.Foo[A]): Int = 2
def h[A](x: A)(ev: c1.Foo[A]): Int = 1
def i(x: Nothing): Int = 1
def i(x: AnyRef)(ev: c1.Foo[x.type]): Int = 2
}
object p {
val c = new Bippy
val d0 = new RichBippy[c.type](c)
def d1 = new RichBippy[c.type](c)
d0.f[Int](5)(null: c.Foo[Int]) // ok
d1.f[Int](5)(null: c.Foo[Int]) // fails
d0.g[Int](5)(null: c.Foo[Int]) // ok
d1.g[Int](5)(null: c.Foo[Int]) // fails
d0.h[Int](5)(null: c.Foo[Int]) // ok
d1.h[Int](5)(null: c.Foo[Int]) // ok
d0.i("")(null) // ok
d1.i("")(null) // ok
}
|