From 670f377d19496e8922624b43721cb88b8023a56b Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Tue, 18 Aug 2015 12:16:40 -0700 Subject: Revert "SI-8346 Rebuild invariant sets in #toSet, avoiding CCE" --- .../scala/collection/immutable/HashSet.scala | 7 ----- .../scala/collection/immutable/ListSet.scala | 7 ----- src/library/scala/collection/immutable/Set.scala | 16 ++++------ test/files/run/t8346.check | 6 ---- test/files/run/t8346.scala | 34 ---------------------- 5 files changed, 6 insertions(+), 64 deletions(-) delete mode 100644 test/files/run/t8346.check delete mode 100644 test/files/run/t8346.scala diff --git a/src/library/scala/collection/immutable/HashSet.scala b/src/library/scala/collection/immutable/HashSet.scala index f548eac88d..6851ab6bc7 100644 --- a/src/library/scala/collection/immutable/HashSet.scala +++ b/src/library/scala/collection/immutable/HashSet.scala @@ -162,13 +162,6 @@ class HashSet[A] extends AbstractSet[A] def - (e: A): HashSet[A] = nullToEmpty(removed0(e, computeHash(e), 0)) - /** Returns this $coll as an immutable set. - * - * A new set will not be built; lazy collections will stay lazy. - */ - @deprecatedOverriding("Immutable sets should do nothing on toSet but return themselves cast as a Set.", "2.11.0") - override def toSet[B >: A]: Set[B] = this.asInstanceOf[Set[B]] - override def filter(p: A => Boolean) = { val buffer = new Array[HashSet[A]](bufferSize(size)) nullToEmpty(filter0(p, false, 0, buffer, 0)) diff --git a/src/library/scala/collection/immutable/ListSet.scala b/src/library/scala/collection/immutable/ListSet.scala index a6e6fba0a5..2e17677359 100644 --- a/src/library/scala/collection/immutable/ListSet.scala +++ b/src/library/scala/collection/immutable/ListSet.scala @@ -138,13 +138,6 @@ class ListSet[A] extends AbstractSet[A] override def stringPrefix = "ListSet" - /** Returns this $coll as an immutable set. - * - * A new set will not be built; lazy collections will stay lazy. - */ - @deprecatedOverriding("Immutable sets should do nothing on toSet but return themselves cast as a Set.", "2.11.0") - override def toSet[B >: A]: Set[B] = this.asInstanceOf[Set[B]] - /** Represents an entry in the `ListSet`. */ protected class Node(override val head: A) extends ListSet[A] with Serializable { diff --git a/src/library/scala/collection/immutable/Set.scala b/src/library/scala/collection/immutable/Set.scala index 7725ad9ee3..0fbf7942d4 100644 --- a/src/library/scala/collection/immutable/Set.scala +++ b/src/library/scala/collection/immutable/Set.scala @@ -35,7 +35,12 @@ trait Set[A] extends Iterable[A] override def companion: GenericCompanion[Set] = Set - override def toSet[B >: A]: Set[B] = to[({type l[a] = immutable.Set[B]})#l] // for bincompat; remove in dev + /** Returns this $coll as an immutable map. + * + * A new map will not be built; lazy collections will stay lazy. + */ + @deprecatedOverriding("Immutable sets should do nothing on toSet but return themselves cast as a Set.", "2.11.0") + override def toSet[B >: A]: Set[B] = this.asInstanceOf[Set[B]] override def seq: Set[A] = this protected override def parCombiner = ParSet.newCombiner[A] // if `immutable.SetLike` gets introduced, please move this there! @@ -57,7 +62,6 @@ object Set extends ImmutableSetFactory[Set] { def - (elem: Any): Set[Any] = this def iterator: Iterator[Any] = Iterator.empty override def foreach[U](f: Any => U): Unit = {} - override def toSet[B >: Any]: Set[B] = this.asInstanceOf[Set[B]] } private[collection] def emptyInstance: Set[Any] = EmptySet @@ -88,8 +92,6 @@ object Set extends ImmutableSetFactory[Set] { if (f(elem1)) Some(elem1) else None } - @deprecatedOverriding("Immutable sets should do nothing on toSet but return themselves cast as a Set.", "2.11.0") - override def toSet[B >: A]: Set[B] = this.asInstanceOf[Set[B]] } /** An optimized representation for immutable sets of size 2 */ @@ -121,8 +123,6 @@ object Set extends ImmutableSetFactory[Set] { else if (f(elem2)) Some(elem2) else None } - @deprecatedOverriding("Immutable sets should do nothing on toSet but return themselves cast as a Set.", "2.11.0") - override def toSet[B >: A]: Set[B] = this.asInstanceOf[Set[B]] } /** An optimized representation for immutable sets of size 3 */ @@ -156,8 +156,6 @@ object Set extends ImmutableSetFactory[Set] { else if (f(elem3)) Some(elem3) else None } - @deprecatedOverriding("Immutable sets should do nothing on toSet but return themselves cast as a Set.", "2.11.0") - override def toSet[B >: A]: Set[B] = this.asInstanceOf[Set[B]] } /** An optimized representation for immutable sets of size 4 */ @@ -193,8 +191,6 @@ object Set extends ImmutableSetFactory[Set] { else if (f(elem4)) Some(elem4) else None } - @deprecatedOverriding("Immutable sets should do nothing on toSet but return themselves cast as a Set.", "2.11.0") - override def toSet[B >: A]: Set[B] = this.asInstanceOf[Set[B]] } } diff --git a/test/files/run/t8346.check b/test/files/run/t8346.check deleted file mode 100644 index 1ba5c31abe..0000000000 --- a/test/files/run/t8346.check +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 5f3df84174..0000000000 --- a/test/files/run/t8346.scala +++ /dev/null @@ -1,34 +0,0 @@ -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)}") -} -- cgit v1.2.3