File: t3481.scala

package info (click to toggle)
scala 2.11.12-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 62,924 kB
  • sloc: javascript: 28,808; java: 13,415; xml: 3,135; sh: 1,620; python: 756; makefile: 38; awk: 36; ansic: 6
file content (28 lines) | stat: -rw-r--r-- 583 bytes parent folder | download | duplicates (4)
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")
    }
  }
}