aboutsummaryrefslogtreecommitdiff
path: root/tests/run/t8346.scala
blob: 1c34ab35f7498c11b4b9199772400ff538fba057 (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
object Test extends dotty.runtime.LegacyApp {
  import reflect.ClassTag

  object SomeEnum extends Enumeration {
    val one, two, three, four = Value
  }

  def sctor[A <: Set[Int]](f: Int => A)(implicit A: ClassTag[A])
      : (String, Int => Set[Int]) =
    (A.runtimeClass.getSimpleName, f)

  val inits: Seq[(String, Int => Set[Int])] = {
    import collection.immutable.{Seq => _, _}
    Seq(sctor(BitSet(_)),
        sctor(HashSet(_)),
        sctor(ListSet(_)),
        sctor(SortedSet(_)),
        sctor(TreeSet(_)))
  }

  def sVarInfo[A](sa: Set[A]): String = {
    val saa = sa.toSet[Any]
    if (sa eq saa) s"""covariant (${(saa + "hi") contains "hi"})"""
    else "invariant"
  }

  inits foreach {case (name, singleton) =>
    print(s"${name}: ")
    val one = singleton(1)
    println(Seq(2,3,4).scanLeft(one)(_ + _) map sVarInfo toList)
  }

  println(s"ValueSet: ${sVarInfo(SomeEnum.values)}")
}