summaryrefslogtreecommitdiff
path: root/test/files/run/t576.scala
blob: 5c8c9a90cba4e559c911da481afb7e39d03bc828 (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
42
43
44
45
46
47
import scala.language.reflectiveCalls

class A {
  override def equals(other: Any) = other match {
    case _: this.type => true
    case _            => false
  }
}

object Dingus {
  def IamDingus = 5
}

object Test {
  val x1 = new A
  val x2 = new A

  val x3 = new { self =>
    override def equals(other : Any) = other match {
      case that: self.type    => true
      case _                  => false
    }
  }
  val x4 = new { self =>
    def f(x: Any): Int = x match {
      case _: x1.type     => 1
      case _: x2.type     => 2
      case _: x3.type     => 3
      case _: self.type   => 4
      case x: Dingus.type => x.IamDingus
    }
  }

  def main(args: Array[String]): Unit = {

    assert(x1 == x1)
    assert(x1 != x2)
    assert(x1 != ())
    assert(x2 != x1)

    assert(x3 == x3)
    assert(x3 != x2)
    assert(x2 != x3)

    List(x1, x2, x3, x4, Dingus) map x4.f foreach println
  }
}