diff options
author | Aleksandar Prokopec <axel22@gmail.com> | 2012-06-28 14:51:20 +0200 |
---|---|---|
committer | Aleksandar Prokopec <axel22@gmail.com> | 2012-06-28 14:51:20 +0200 |
commit | 2f0d94c02ab328a3f8da25b5ab8f402a68143af3 (patch) | |
tree | 9969dee2a7504b1a488e4063dc00f44ce4f4a296 /src/library/scala/collection/SortedMap.scala | |
parent | 9a28ee1ffc085bc680c48b12ad632b9133adf020 (diff) | |
download | scala-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.scala | 19 |
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 + } + } + } |