aboutsummaryrefslogtreecommitdiff
path: root/tests/run/t3984.scala
blob: 15e50b10fde526976ad721c86088c0b827748faf (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
48
49
50
51
52
object SetBug {
  import scala.collection.immutable.{ Set => ImmutSet }
  import scala.collection.mutable.{ Set => MutSet }

  case class IH (i: Int, h: Int) {
    override def hashCode: Int = h
  }

  def run(): Unit = {
    var is = ImmutSet.empty[IH]
    var ms = MutSet.empty[IH]
    for (ih <- List(IH(2,0),IH(0,0),IH(4,4),IH(6,4),IH(-8,1520786080))) {
      is = is + ih
      ms = ms + ih
    }
    assert(is == ms)
    val x = IH(6,4)
    is = is - x
    ms = ms - x
    assert(is == ms)
  }
}

object MapBug {
  import scala.collection.immutable.{ Map => ImmutMap }
  import scala.collection.mutable.{ Map => MutMap }

  case class IH (i: Int, h: Int) {
    override def hashCode: Int = h
  }

  def run(): Unit = {
    var im = ImmutMap.empty[IH,IH]
    var mm = MutMap.empty[IH,IH]
    for (ih <- List(IH(2,0),IH(0,0),IH(4,4),IH(6,4),IH(-8,1520786080))) {
      im = im + ((ih,ih))
      mm = mm + ((ih,ih))
    }
    assert(im == mm)
    val x = IH(6,4)
    im = im - x
    mm = mm - x
    assert(im == mm)
  }
}

object Test {
  def main(args: Array[String]): Unit = {
    SetBug.run()
    MapBug.run()
  }
}