blob: f4b781ee37bd3add7084a759e5b5ad8c04447f53 (
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
|
object t3481 {
object ex1 {
trait A[T] { type B = T }
def f[T <: A[_]](a: T#B) = 1
f[A[Int]]("hello")
}
object ex2 {
trait A { type T; def m(t: T) = t.toString }
class B[T2] extends A { type T = T2 }
def f[T <: B[_]](a: T#T, b: T) = b.m(a)
f("Hello", new B[Int])
}
object ex3 {
class B[T] { type T2 = T; def m(t: T2) = t.toString }
val b: B[_] = new B[Int]
b.m("Hello")
}
object ex4 {
abstract class B[T] { type T2 = T; def m(t: T2): Any }
object Test {
val b: B[_] = sys.error("")
b.m("Hello")
}
}
}
|