diff options
author | James Iry <jamesiry@gmail.com> | 2013-03-22 11:29:30 -0700 |
---|---|---|
committer | James Iry <jamesiry@gmail.com> | 2013-03-22 11:29:30 -0700 |
commit | 426cec50f343f6c936349e7e0cab774423218d66 (patch) | |
tree | 0ab7775e0bc9edeaa6561965d749044f4dfc4b5c | |
parent | d816bc586080f89a823eb6bb96df17259307052c (diff) | |
parent | 1b3a379e7b0518279ceae3a47135df35b4fe3439 (diff) | |
download | scala-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.scala | 2 | ||||
-rw-r--r-- | test/files/run/bitsets.scala | 13 |
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 { |