summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorIchoran <ichoran@gmail.com>2014-05-29 06:57:12 -0700
committerIchoran <ichoran@gmail.com>2014-05-29 06:57:12 -0700
commit6c8a1205cfe1f64511a562ab8cda0d0bddf9110f (patch)
treefea95dd2c98ede1e898e88bc0af79918535ed88e /test
parent60a06a75f4e1a33057936929b636060e418d5ad4 (diff)
parent9fc098dd0dcf1825ec55501716b4f2a0a6d197ae (diff)
downloadscala-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.check6
-rw-r--r--test/files/run/t8346.scala34
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)}")
+}