blob: 6bfd336ce0577a097b874018fec8aa7e57a1ba85 (
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
34
35
36
37
38
39
40
|
trait Trait[-A, +B, C] {
def ok() = { // ok
object O {
private def f0(x: A): A = ???
def f1(x: A): B = ???
def f2(x: A): C = ???
private def f3(x: B): A = ???
private def f4(x: B): B = ???
private def f5(x: B): C = ???
private def f6(x: C): A = ???
def f7(x: C): B = ???
def f8(x: C): C = ???
}
O
}
def fail1() = { object O { def f0(x: A): A = ??? } ; O } // fail
def fail2() = { object O { def f0(x: B): A = ??? } ; O } // fail
def fail3() = { object O { def f0(x: B): B = ??? } ; O } // fail
def fail4() = { object O { def f0(x: B): C = ??? } ; O } // fail
def fail5() = { object O { def f0(x: C): A = ??? } ; O } // fail
def fail6() = { // fail
trait O0 {
def f0(x: A): A = ???
def f1(x: A): B = ???
def f2(x: A): C = ???
}
object O1 extends O0
O1
}
def fail7() = { // fail
trait O0 {
def f0(x: A): A = ???
def f1(x: A): B = ???
def f2(x: A): C = ???
}
new O0 { }
}
}
|