File: t1318.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 (31 lines) | stat: -rw-r--r-- 507 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
29
30
31
abstract class F {
    type mType <: M
}

abstract class M { self =>

    type mType <: M

    type fType = F {type mType >: self.mType }
    def fs: List[fType]
}

abstract class A0 extends M {
    type mType = A0
    def fs: List[fType] = Nil
}

object A extends A0 {}

abstract class B0 extends M {
    type mType = B0
    def fs: List[fType] = Nil
}

object B extends B0 {}

object C {
    def ab = List(A) ::: List(B)
    // the following compiles successfully:
    // def ab = List(A) ::: List[M](B)
}