summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library/scala/collection/Map.scala7
-rw-r--r--src/library/scala/collection/SortedMap.scala5
-rw-r--r--src/library/scala/collection/SortedSet.scala4
-rw-r--r--src/library/scala/collection/generic/ImmutableMapFactory.scala8
-rw-r--r--src/library/scala/collection/generic/ImmutableSortedMapFactory.scala9
-rw-r--r--src/library/scala/collection/generic/ImmutableSortedSetFactory.scala6
-rw-r--r--src/library/scala/collection/generic/MapFactory.scala6
-rw-r--r--src/library/scala/collection/generic/SortedMapFactory.scala7
-rw-r--r--src/library/scala/collection/generic/SortedSetFactory.scala6
-rw-r--r--test/files/pos/t2500.scala6
10 files changed, 28 insertions, 36 deletions
diff --git a/src/library/scala/collection/Map.scala b/src/library/scala/collection/Map.scala
index b53786308b..f947e4e5da 100644
--- a/src/library/scala/collection/Map.scala
+++ b/src/library/scala/collection/Map.scala
@@ -35,7 +35,7 @@ import generic._
* @note If you do not have specific implementations for `add` and `-` in mind,
* you might consider inheriting from <code>DefaultMap</code> instead.
*
- * @note Of you additions and mutations return the same kind of map as the map
+ * @note If your additions and mutations return the same kind of map as the map
* you are defining, you should inherit from <code>MapLike</code> as well.
*
* @since 1
@@ -48,7 +48,8 @@ trait Map[A, +B] extends Iterable[(A, B)] with MapLike[A, B, Map[A, B]] {
*
* @since 2.5
*/
-object Map extends ImmutableMapFactory[immutable.Map] {
- def empty[A, B]: immutable.Map[A, B] = immutable.Map.empty
+object Map extends MapFactory[Map] {
+ def empty[A, B]: Map[A, B] = immutable.Map.empty
+
implicit def canBuildFrom[A, B]: CanBuildFrom[Coll, (A, B), Map[A, B]] = new MapCanBuildFrom[A, B]
}
diff --git a/src/library/scala/collection/SortedMap.scala b/src/library/scala/collection/SortedMap.scala
index 8846e47bc3..611f6ed013 100644
--- a/src/library/scala/collection/SortedMap.scala
+++ b/src/library/scala/collection/SortedMap.scala
@@ -30,9 +30,10 @@ trait SortedMap[A, +B] extends Map[A, B] with SortedMapLike[A, B, SortedMap[A, B
/**
* @since 2.8
*/
-object SortedMap extends ImmutableSortedMapFactory[immutable.SortedMap] {
+object SortedMap extends SortedMapFactory[SortedMap] {
+ 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]
- def empty[A, B](implicit ord: Ordering[A]): immutable.SortedMap[A, B] = immutable.SortedMap.empty[A, B](ord)
}
diff --git a/src/library/scala/collection/SortedSet.scala b/src/library/scala/collection/SortedSet.scala
index eebfd44e44..ab988e39ad 100644
--- a/src/library/scala/collection/SortedSet.scala
+++ b/src/library/scala/collection/SortedSet.scala
@@ -26,9 +26,9 @@ trait SortedSet[A] extends Set[A] with SortedSetLike[A, SortedSet[A]] {
/**
* @since 2.8
*/
-object SortedSet extends ImmutableSortedSetFactory[immutable.SortedSet] {
+object SortedSet extends SortedSetFactory[SortedSet] {
+ def empty[A](implicit ord: Ordering[A]): SortedSet[A] = immutable.SortedSet.empty[A](ord)
implicit def canBuildFrom[A](implicit ord: Ordering[A]): CanBuildFrom[Coll, A, SortedSet[A]] = new SortedSetCanBuildFrom[A]
- def empty[A](implicit ord: Ordering[A]): immutable.SortedSet[A] = immutable.SortedSet.empty[A](ord)
}
diff --git a/src/library/scala/collection/generic/ImmutableMapFactory.scala b/src/library/scala/collection/generic/ImmutableMapFactory.scala
index 88862d3b4e..53d831dbfb 100644
--- a/src/library/scala/collection/generic/ImmutableMapFactory.scala
+++ b/src/library/scala/collection/generic/ImmutableMapFactory.scala
@@ -11,15 +11,9 @@
package scala.collection
package generic
-import mutable.{Builder, MapBuilder}
-
/** A template for companion objects of <code>immutable.Map</code> and
* subclasses thereof.
*
* @since 2.8
*/
-abstract class ImmutableMapFactory[CC[A, +B] <: immutable.Map[A, B] with immutable.MapLike[A, B, CC[A, B]]]
- extends MapFactory[CC] {
-
- def newBuilder[A, B] = new MapBuilder[A, B, CC[A, B]](empty[A, B])
-}
+abstract class ImmutableMapFactory[CC[A, +B] <: immutable.Map[A, B] with immutable.MapLike[A, B, CC[A, B]]] extends MapFactory[CC]
diff --git a/src/library/scala/collection/generic/ImmutableSortedMapFactory.scala b/src/library/scala/collection/generic/ImmutableSortedMapFactory.scala
index 296d166471..6f8ef7d7a3 100644
--- a/src/library/scala/collection/generic/ImmutableSortedMapFactory.scala
+++ b/src/library/scala/collection/generic/ImmutableSortedMapFactory.scala
@@ -12,15 +12,8 @@
package scala.collection
package generic
-import mutable.{Builder, MapBuilder}
-
/** A template for companion objects of immutable.Map and subclasses thereof.
*
* @since 2.8
*/
-abstract class ImmutableSortedMapFactory[CC[A, B] <: immutable.SortedMap[A, B] with SortedMapLike[A, B, CC[A, B]]]
- extends SortedMapFactory[CC] {
-
- def newBuilder[A, B](implicit ord: Ordering[A]): Builder[(A, B), CC[A, B]] =
- new MapBuilder[A, B, CC[A, B]](empty(ord))
-}
+abstract class ImmutableSortedMapFactory[CC[A, B] <: immutable.SortedMap[A, B] with SortedMapLike[A, B, CC[A, B]]] extends SortedMapFactory[CC]
diff --git a/src/library/scala/collection/generic/ImmutableSortedSetFactory.scala b/src/library/scala/collection/generic/ImmutableSortedSetFactory.scala
index 84b990314b..e9e7599bca 100644
--- a/src/library/scala/collection/generic/ImmutableSortedSetFactory.scala
+++ b/src/library/scala/collection/generic/ImmutableSortedSetFactory.scala
@@ -12,12 +12,8 @@
package scala.collection
package generic
-import mutable.{Builder, SetBuilder}
-
/** A template for companion objects of mutable.Map and subclasses thereof.
*
* @since 2.8
*/
-abstract class ImmutableSortedSetFactory[CC[A] <: immutable.SortedSet[A] with SortedSetLike[A, CC[A]]] extends SortedSetFactory[CC]{
- def newBuilder[A](implicit ord: Ordering[A]): Builder[A, CC[A]] = new SetBuilder[A, CC[A]](empty)
-}
+abstract class ImmutableSortedSetFactory[CC[A] <: immutable.SortedSet[A] with SortedSetLike[A, CC[A]]] extends SortedSetFactory[CC] \ No newline at end of file
diff --git a/src/library/scala/collection/generic/MapFactory.scala b/src/library/scala/collection/generic/MapFactory.scala
index 9e47412448..2476142ec7 100644
--- a/src/library/scala/collection/generic/MapFactory.scala
+++ b/src/library/scala/collection/generic/MapFactory.scala
@@ -12,7 +12,7 @@
package scala.collection
package generic
-import mutable.Builder
+import mutable.{Builder, MapBuilder}
/** A template for companion objects of <code>mutable.Map</code> and
* subclasses thereof.
@@ -23,12 +23,12 @@ abstract class MapFactory[CC[A, B] <: Map[A, B] with MapLike[A, B, CC[A, B]]] {
type Coll = CC[_, _]
- def newBuilder[A, B]: Builder[(A, B), CC[A, B]]
-
def empty[A, B]: CC[A, B]
def apply[A, B](elems: (A, B)*): CC[A, B] = (newBuilder[A, B] ++= elems).result
+ def newBuilder[A, B]: Builder[(A, B), CC[A, B]] = new MapBuilder[A, B, CC[A, B]](empty[A, B])
+
class MapCanBuildFrom[A, B] extends CanBuildFrom[Coll, (A, B), CC[A, B]] {
def apply(from: Coll) = newBuilder[A, B]
def apply() = newBuilder
diff --git a/src/library/scala/collection/generic/SortedMapFactory.scala b/src/library/scala/collection/generic/SortedMapFactory.scala
index 5bba735fef..29a92fc471 100644
--- a/src/library/scala/collection/generic/SortedMapFactory.scala
+++ b/src/library/scala/collection/generic/SortedMapFactory.scala
@@ -12,7 +12,7 @@
package scala.collection
package generic
-import mutable.Builder
+import mutable.{Builder, MapBuilder}
/** A template for companion objects of mutable.Map and subclasses thereof.
*
@@ -22,12 +22,13 @@ abstract class SortedMapFactory[CC[A, B] <: SortedMap[A, B] with SortedMapLike[A
type Coll = CC[_, _]
- def newBuilder[A, B](implicit ord: Ordering[A]): Builder[(A, B), CC[A, B]]
-
def empty[A, B](implicit ord: Ordering[A]): CC[A, B]
def apply[A, B](elems: (A, B)*)(implicit ord: Ordering[A]): CC[A, B] = (newBuilder[A, B](ord) ++= elems).result
+ def newBuilder[A, B](implicit ord: Ordering[A]): Builder[(A, B), CC[A, B]] =
+ new MapBuilder[A, B, CC[A, B]](empty(ord))
+
class SortedMapCanBuildFrom[A, B](implicit ord: Ordering[A]) extends CanBuildFrom[Coll, (A, B), CC[A, B]] {
def apply(from: Coll) = newBuilder[A, B](ord)
def apply() = newBuilder[A, B]
diff --git a/src/library/scala/collection/generic/SortedSetFactory.scala b/src/library/scala/collection/generic/SortedSetFactory.scala
index 1c7ca885aa..b4d507cfe0 100644
--- a/src/library/scala/collection/generic/SortedSetFactory.scala
+++ b/src/library/scala/collection/generic/SortedSetFactory.scala
@@ -12,7 +12,7 @@
package scala.collection
package generic
-import mutable.Builder
+import mutable.{Builder, SetBuilder}
/** A template for companion objects of Set and subclasses thereof.
*
@@ -21,12 +21,12 @@ import mutable.Builder
abstract class SortedSetFactory[CC[A] <: SortedSet[A] with SortedSetLike[A, CC[A]]] {
type Coll = CC[_]
- def newBuilder[A](implicit ord: Ordering[A]): Builder[A, CC[A]]
-
def empty[A](implicit ord: Ordering[A]): CC[A]
def apply[A](elems: A*)(implicit ord: Ordering[A]): CC[A] = (newBuilder[A](ord) ++= elems).result
+ def newBuilder[A](implicit ord: Ordering[A]): Builder[A, CC[A]] = new SetBuilder[A, CC[A]](empty)
+
implicit def newCanBuildFrom[A](implicit ord : Ordering[A]) : CanBuildFrom[Coll, A, CC[A]] = new SortedSetCanBuildFrom()(ord);
class SortedSetCanBuildFrom[A](implicit ord: Ordering[A]) extends CanBuildFrom[Coll, A, CC[A]] {
diff --git a/test/files/pos/t2500.scala b/test/files/pos/t2500.scala
new file mode 100644
index 0000000000..76dea4cf8d
--- /dev/null
+++ b/test/files/pos/t2500.scala
@@ -0,0 +1,6 @@
+object Test {
+ import scala.collection._
+ ((Map(1 -> "a", 2 -> "b"): collection.Map[Int, String]) map identity[(Int, String)]) : scala.collection.Map[Int,String]
+ ((SortedMap(1 -> "a", 2 -> "b"): collection.SortedMap[Int, String]) map identity[(Int, String)]): scala.collection.SortedMap[Int,String]
+ ((SortedSet(1, 2): collection.SortedSet[Int]) map identity[Int]): scala.collection.SortedSet[Int]
+} \ No newline at end of file