summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-10-01 19:31:06 +0000
committerPaul Phillips <paulp@improving.org>2009-10-01 19:31:06 +0000
commit7209116540dee44916214870cc476546b20e0eae (patch)
tree89bcac677c3558d497043e7f26b8160357109dcc
parentd0442a8636e268f051052e4e4ff04225bab4f67e (diff)
downloadscala-7209116540dee44916214870cc476546b20e0eae.tar.gz
scala-7209116540dee44916214870cc476546b20e0eae.tar.bz2
scala-7209116540dee44916214870cc476546b20e0eae.zip
Fix and test case for #2075.
-rw-r--r--src/library/scala/collection/SortedMapLike.scala8
-rw-r--r--src/library/scala/collection/SortedSet.scala2
-rw-r--r--src/library/scala/collection/SortedSetLike.scala2
-rw-r--r--src/library/scala/collection/immutable/SortedSet.scala2
-rw-r--r--test/files/run/bug2075.scala7
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