diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2015-11-12 11:54:29 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2015-11-12 11:54:29 -0800 |
commit | 6e6b855557377e62c081ffd82cc5fc0b54493b13 (patch) | |
tree | 463e582412d195d30c78636dd9e23501bb75f1d5 | |
parent | 3dc269060b370b1e49b54241e31b811208a57153 (diff) | |
parent | e7079ca36aef1b74696f50fbdfe11d99273274d7 (diff) | |
download | scala-6e6b855557377e62c081ffd82cc5fc0b54493b13.tar.gz scala-6e6b855557377e62c081ffd82cc5fc0b54493b13.tar.bz2 scala-6e6b855557377e62c081ffd82cc5fc0b54493b13.zip |
Merge pull request #4810 from ruippeixotog/fix-mutable-setlike-clear
SI-9497 Fix SetLike#clear() default implementation
-rw-r--r-- | src/library/scala/collection/mutable/SetLike.scala | 4 | ||||
-rw-r--r-- | test/junit/scala/collection/mutable/SetLikeTest.scala | 26 |
2 files changed, 29 insertions, 1 deletions
diff --git a/src/library/scala/collection/mutable/SetLike.scala b/src/library/scala/collection/mutable/SetLike.scala index 81a71adc91..01075a2633 100644 --- a/src/library/scala/collection/mutable/SetLike.scala +++ b/src/library/scala/collection/mutable/SetLike.scala @@ -129,7 +129,9 @@ trait SetLike[A, +This <: SetLike[A, This] with Set[A]] /** Removes all elements from the set. After this operation is completed, * the set will be empty. */ - def clear() { foreach(-=) } + def clear(): Unit = + for (elem <- this.toList) + this -= elem override def clone(): This = empty ++= repr.seq diff --git a/test/junit/scala/collection/mutable/SetLikeTest.scala b/test/junit/scala/collection/mutable/SetLikeTest.scala new file mode 100644 index 0000000000..c819024558 --- /dev/null +++ b/test/junit/scala/collection/mutable/SetLikeTest.scala @@ -0,0 +1,26 @@ +package scala.collection.mutable + +import org.junit.Assert._ +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 + +@RunWith(classOf[JUnit4]) +class SetLikeTest { + + class MySet(self: Set[String]) extends Set[String] with SetLike[String, MySet] { + override def -=(elem: String) = { self -= elem; this } + override def +=(elem: String) = { self += elem; this } + + override def empty = new MySet(self.empty) + override def iterator = self.iterator + override def contains(elem: String) = self.contains(elem) + } + + @Test + def hasCorrectClear() { + val s = new MySet(Set("EXPOSEDNODE", "CONNECTABLE")) + s.clear() + assertEquals(new MySet(Set()), s) + } +} |