blob: 1c34ab35f7498c11b4b9199772400ff538fba057 (
plain) (
tree)
|
|
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)}")
}
|