summaryrefslogtreecommitdiff
path: root/test/files/neg/t3714-neg.scala
blob: 753b367ec090a51ebefb4229377d76660d36eed4 (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
30
31
32
33
34
35
36
37
38
39
40
41
// this is a slight negative twist on run/t3714.scala.
trait Break {
  protected val break: Int;
}

class BreakImpl(protected val break: Int) extends Break { }
object BreakImpl {
  def apply(x: Int): Break = new BreakImpl(x)
  def unapply(x: Any) = x match {
    case x: BreakImpl => Some(x.break)
    case _            => None
  }
}

object Test {
  def f1(x: Break) = x match {
    case b: BreakImpl => b.break
    case b            => -1
  }
  def f2(x: Break) = x match {
    case BreakImpl(x) => x
    case _            => -1
  }
  def f3(x: Any) = x match {
    case b: BreakImpl => b.break
    case b            => -1
  }
  def f4(x: Any) = x match {
    case BreakImpl(x) => x
    case _            => -1
  }

  def main(args: Array[String]) {
    val break = BreakImpl(22)
    assert(f1(break) == 22)
    assert(f2(break) == 22)
    assert(f3(break) == 22)
    assert(f4(break) == 22)
  }
}