summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Iry <jamesiry@gmail.com>2013-03-22 11:29:30 -0700
committerJames Iry <jamesiry@gmail.com>2013-03-22 11:29:30 -0700
commit426cec50f343f6c936349e7e0cab774423218d66 (patch)
tree0ab7775e0bc9edeaa6561965d749044f4dfc4b5c
parentd816bc586080f89a823eb6bb96df17259307052c (diff)
parent1b3a379e7b0518279ceae3a47135df35b4fe3439 (diff)
downloadscala-426cec50f343f6c936349e7e0cab774423218d66.tar.gz
scala-426cec50f343f6c936349e7e0cab774423218d66.tar.bz2
scala-426cec50f343f6c936349e7e0cab774423218d66.zip
Merge pull request #2287 from vigdorchik/ticket/si-7102
SI-7102 Override isEmpty for bitsets with an efficient implementation
-rw-r--r--src/library/scala/collection/BitSetLike.scala2
-rw-r--r--test/files/run/bitsets.scala13
2 files changed, 15 insertions, 0 deletions
diff --git a/src/library/scala/collection/BitSetLike.scala b/src/library/scala/collection/BitSetLike.scala
index 72a6713ffd..034ed2b24a 100644
--- a/src/library/scala/collection/BitSetLike.scala
+++ b/src/library/scala/collection/BitSetLike.scala
@@ -69,6 +69,8 @@ trait BitSetLike[+This <: BitSetLike[This] with SortedSet[Int]] extends SortedSe
s
}
+ override def isEmpty: Boolean = 0 until nwords forall (i => word(i) == 0)
+
implicit def ordering: Ordering[Int] = Ordering.Int
def rangeImpl(from: Option[Int], until: Option[Int]): This = {
diff --git a/test/files/run/bitsets.scala b/test/files/run/bitsets.scala
index 0ea43fcb95..d55f9e4e83 100644
--- a/test/files/run/bitsets.scala
+++ b/test/files/run/bitsets.scala
@@ -37,6 +37,19 @@ object TestMutable {
Console.println("mi1 = " + ms1.toImmutable)
Console.println("mi2 = " + ms2.toImmutable)
Console.println
+
+ val N = 257
+ val gen = 3
+ val bs = BitSet((1 until N): _*)
+ (1 until N).foldLeft(gen) {
+ case (acc, i) =>
+ assert(bs.size == N-i, s"Bad size for $bs, expected ${N-i} actual ${bs.size}")
+ assert(!bs.isEmpty, s"Unexpected isEmpty for $bs")
+ bs -= acc
+ acc*gen % N
+ }
+ assert(bs.size == 0, s"Expected size == 0 for $bs")
+ assert(bs.isEmpty, s"Expected isEmpty for $bs")
}
object TestMutable2 {