diff options
author | Ichoran <ichoran@gmail.com> | 2014-05-29 06:57:12 -0700 |
---|---|---|
committer | Ichoran <ichoran@gmail.com> | 2014-05-29 06:57:12 -0700 |
commit | 6c8a1205cfe1f64511a562ab8cda0d0bddf9110f (patch) | |
tree | fea95dd2c98ede1e898e88bc0af79918535ed88e /test | |
parent | 60a06a75f4e1a33057936929b636060e418d5ad4 (diff) | |
parent | 9fc098dd0dcf1825ec55501716b4f2a0a6d197ae (diff) | |
download | scala-6c8a1205cfe1f64511a562ab8cda0d0bddf9110f.tar.gz scala-6c8a1205cfe1f64511a562ab8cda0d0bddf9110f.tar.bz2 scala-6c8a1205cfe1f64511a562ab8cda0d0bddf9110f.zip |
Merge pull request #3791 from S11001001/ticket/8346
SI-8346 Rebuild invariant sets in #toSet, avoiding CCE
Diffstat (limited to 'test')
-rw-r--r-- | test/files/run/t8346.check | 6 | ||||
-rw-r--r-- | test/files/run/t8346.scala | 34 |
2 files changed, 40 insertions, 0 deletions
diff --git a/test/files/run/t8346.check b/test/files/run/t8346.check new file mode 100644 index 0000000000..1ba5c31abe --- /dev/null +++ b/test/files/run/t8346.check @@ -0,0 +1,6 @@ +BitSet: List(invariant, invariant, invariant, invariant) +HashSet: List(covariant (true), covariant (true), covariant (true), covariant (true)) +ListSet: List(covariant (true), covariant (true), covariant (true), covariant (true)) +SortedSet: List(invariant, invariant, invariant, invariant) +TreeSet: List(invariant, invariant, invariant, invariant) +ValueSet: invariant diff --git a/test/files/run/t8346.scala b/test/files/run/t8346.scala new file mode 100644 index 0000000000..5f3df84174 --- /dev/null +++ b/test/files/run/t8346.scala @@ -0,0 +1,34 @@ +object Test extends App { + 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)}") +} |