diff options
author | Paul Phillips <paulp@improving.org> | 2009-10-01 19:31:06 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2009-10-01 19:31:06 +0000 |
commit | 7209116540dee44916214870cc476546b20e0eae (patch) | |
tree | 89bcac677c3558d497043e7f26b8160357109dcc | |
parent | d0442a8636e268f051052e4e4ff04225bab4f67e (diff) | |
download | scala-7209116540dee44916214870cc476546b20e0eae.tar.gz scala-7209116540dee44916214870cc476546b20e0eae.tar.bz2 scala-7209116540dee44916214870cc476546b20e0eae.zip |
Fix and test case for #2075.
-rw-r--r-- | src/library/scala/collection/SortedMapLike.scala | 8 | ||||
-rw-r--r-- | src/library/scala/collection/SortedSet.scala | 2 | ||||
-rw-r--r-- | src/library/scala/collection/SortedSetLike.scala | 2 | ||||
-rw-r--r-- | src/library/scala/collection/immutable/SortedSet.scala | 2 | ||||
-rw-r--r-- | test/files/run/bug2075.scala | 7 |
5 files changed, 14 insertions, 7 deletions
diff --git a/src/library/scala/collection/SortedMapLike.scala b/src/library/scala/collection/SortedMapLike.scala index 2e75053f9b..c7a8ebbd62 100644 --- a/src/library/scala/collection/SortedMapLike.scala +++ b/src/library/scala/collection/SortedMapLike.scala @@ -36,11 +36,9 @@ self => override def keySet : SortedSet[A] = new DefaultKeySortedSet protected class DefaultKeySortedSet extends super.DefaultKeySet with SortedSet[A] { - def ordering = self.ordering; - /** We can't give an implementation of +/- here because we do not have a generic sorted set implementation - */ - override def + (elem: A): SortedSet[A] = throw new UnsupportedOperationException("keySet.+") - override def - (elem: A): SortedSet[A] = throw new UnsupportedOperationException("keySet.-") + implicit def ordering = self.ordering + override def + (elem: A): SortedSet[A] = (SortedSet[A]() ++ this + elem) + override def - (elem: A): SortedSet[A] = (SortedSet[A]() ++ this - elem) override def rangeImpl(from : Option[A], until : Option[A]) : SortedSet[A] = { val map = self.rangeImpl(from, until) new map.DefaultKeySortedSet diff --git a/src/library/scala/collection/SortedSet.scala b/src/library/scala/collection/SortedSet.scala index a1213a9dc4..33e5551824 100644 --- a/src/library/scala/collection/SortedSet.scala +++ b/src/library/scala/collection/SortedSet.scala @@ -20,7 +20,7 @@ import generic._ */ trait SortedSet[A] extends Set[A] with SortedSetLike[A, SortedSet[A]] { /** Needs to be overridden in subclasses. */ - override def empty: SortedSet[A] = throw new UnsupportedOperationException("SortedMap.empty") + override def empty: SortedSet[A] = SortedSet.empty[A] } /** diff --git a/src/library/scala/collection/SortedSetLike.scala b/src/library/scala/collection/SortedSetLike.scala index b0a2f20992..1c41ee3a5a 100644 --- a/src/library/scala/collection/SortedSetLike.scala +++ b/src/library/scala/collection/SortedSetLike.scala @@ -21,6 +21,8 @@ import generic._ trait SortedSetLike[A, +This <: SortedSet[A] with SortedSetLike[A, This]] extends Sorted[A, This] with SetLike[A, This] { self => + implicit def ordering: Ordering[A] + override def keySet = repr override def firstKey: A = head diff --git a/src/library/scala/collection/immutable/SortedSet.scala b/src/library/scala/collection/immutable/SortedSet.scala index 0fd9365dd1..126b751164 100644 --- a/src/library/scala/collection/immutable/SortedSet.scala +++ b/src/library/scala/collection/immutable/SortedSet.scala @@ -24,7 +24,7 @@ import mutable.Builder */ trait SortedSet[A] extends Set[A] with scala.collection.SortedSet[A] with SortedSetLike[A, SortedSet[A]] { /** Needs to be overridden in subclasses. */ - override def empty: SortedSet[A] = throw new UnsupportedOperationException("SortedMap.empty") + override def empty: SortedSet[A] = SortedSet.empty[A] } /** diff --git a/test/files/run/bug2075.scala b/test/files/run/bug2075.scala new file mode 100644 index 0000000000..f328faddcb --- /dev/null +++ b/test/files/run/bug2075.scala @@ -0,0 +1,7 @@ +object Test extends Application { + var tm = new scala.collection.immutable.TreeMap[Int,Int] + for (i <- 0 to 100) + tm = tm.insert(i, i) + + tm.keySet.filter(_ < 40) +}
\ No newline at end of file |