blob: 386c7af98dee2829846df667e89ba0f3156d3864 (
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
|
sealed trait Base
case object O1 extends Base
case object O2 extends Base {
def foo: Int = 0
}
sealed trait Base2
case object O3 extends Base2
case object O4 extends Base with Base2
object Test {
val a /*: Product with Serialiable with Base */ = if (true) O1 else O2
a match {
case null =>
}
def t1(a: Product with Base with Base2) = a match {
case null => // O1..O3 should *not* be possible here
}
def t2(a: Product with Base { def foo: Int }) = a match {
case null => // O2 in the domain
}
def t3(a: Product with Base { def bar: Int }) = a match {
case null => // nothing in the domain
}
}
|