summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/immutable/HashMap.scala
diff options
context:
space:
mode:
authorRex Kerr <ichoran@gmail.com>2014-02-13 15:40:18 -0800
committerRex Kerr <ichoran@gmail.com>2014-02-14 17:09:52 -0800
commit326fa9ac4bb96a042733ad5c96ffee163895df5d (patch)
treec6bcf6e5af9386432404e8f7e6162beec842c798 /src/library/scala/collection/immutable/HashMap.scala
parentc83e01d47d941265fa5415c0f29a884c904fdfa0 (diff)
downloadscala-326fa9ac4bb96a042733ad5c96ffee163895df5d.tar.gz
scala-326fa9ac4bb96a042733ad5c96ffee163895df5d.tar.bz2
scala-326fa9ac4bb96a042733ad5c96ffee163895df5d.zip
SI-8264 scala.collection.immutable.HashSet#- returns broken Set
Was an error in HashSet's handling of removal of an element when a HashTrieSet should turn into a HashSet1. Also slightly modified HashMap's filter0 to more closely match HashSet (by adding the same comment).
Diffstat (limited to 'src/library/scala/collection/immutable/HashMap.scala')
-rw-r--r--src/library/scala/collection/immutable/HashMap.scala2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/library/scala/collection/immutable/HashMap.scala b/src/library/scala/collection/immutable/HashMap.scala
index 8a24f721d7..3b3e65ea61 100644
--- a/src/library/scala/collection/immutable/HashMap.scala
+++ b/src/library/scala/collection/immutable/HashMap.scala
@@ -350,6 +350,8 @@ object HashMap extends ImmutableMapFactory[HashMap] with BitOperations.Int {
Array.copy(elems, 0, elemsNew, 0, offset)
Array.copy(elems, offset + 1, elemsNew, offset, elems.length - offset - 1)
val sizeNew = size - sub.size
+ // if we have only one child, which is not a HashTrieSet but a self-contained set like
+ // HashSet1 or HashSetCollision1, return the child instead
if (elemsNew.length == 1 && !elemsNew(0).isInstanceOf[HashTrieMap[_,_]])
elemsNew(0)
else