File: virtpatmat_exhaust_compound.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 (29 lines) | stat: -rw-r--r-- 635 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
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 Serializable 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
  }
}