summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/SortedMap.scala
diff options
context:
space:
mode:
authorAleksandar Prokopec <axel22@gmail.com>2012-06-28 14:51:20 +0200
committerAleksandar Prokopec <axel22@gmail.com>2012-06-28 14:51:20 +0200
commit2f0d94c02ab328a3f8da25b5ab8f402a68143af3 (patch)
tree9969dee2a7504b1a488e4063dc00f44ce4f4a296 /src/library/scala/collection/SortedMap.scala
parent9a28ee1ffc085bc680c48b12ad632b9133adf020 (diff)
downloadscala-2f0d94c02ab328a3f8da25b5ab8f402a68143af3.tar.gz
scala-2f0d94c02ab328a3f8da25b5ab8f402a68143af3.tar.bz2
scala-2f0d94c02ab328a3f8da25b5ab8f402a68143af3.zip
Fix SI-5846 and SI-4027.
Diffstat (limited to 'src/library/scala/collection/SortedMap.scala')
-rw-r--r--src/library/scala/collection/SortedMap.scala19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/library/scala/collection/SortedMap.scala b/src/library/scala/collection/SortedMap.scala
index 3f92908848..e32e0977df 100644
--- a/src/library/scala/collection/SortedMap.scala
+++ b/src/library/scala/collection/SortedMap.scala
@@ -30,9 +30,26 @@ trait SortedMap[A, +B] extends Map[A, B] with SortedMapLike[A, B, SortedMap[A, B
* @since 2.8
*/
object SortedMap extends SortedMapFactory[SortedMap] {
- def empty[A, B](implicit ord: Ordering[A]): immutable.SortedMap[A, B] = immutable.SortedMap.empty[A, B](ord)
+ def empty[A, B](implicit ord: Ordering[A]): SortedMap[A, B] = immutable.SortedMap.empty[A, B](ord)
implicit def canBuildFrom[A, B](implicit ord: Ordering[A]): CanBuildFrom[Coll, (A, B), SortedMap[A, B]] = new SortedMapCanBuildFrom[A, B]
+
+ private[collection] trait Default[A, +B] extends SortedMap[A, B] {
+ self =>
+ override def +[B1 >: B](kv: (A, B1)): SortedMap[A, B1] = {
+ val b = SortedMap.newBuilder[A, B1]
+ b ++= this
+ b += ((kv._1, kv._2))
+ b.result
+ }
+
+ override def - (key: A): SortedMap[A, B] = {
+ val b = newBuilder
+ for (kv <- this; if kv._1 != key) b += kv
+ b.result
+ }
+ }
+
}