Skip to content

Commit 381b44c

Browse files
authored
Merge pull request scala/scala#8957 from mkeskells/2.12.x_SortedSet_SortedMap
2 parents dd9400f + 0bb3e15 commit 381b44c

File tree

4 files changed

+13
-2
lines changed

4 files changed

+13
-2
lines changed

library/src/scala/collection/generic/SortedMapFactory.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ abstract class SortedMapFactory[CC[A, B] <: SortedMap[A, B] with SortedMapLike[A
2727

2828
def empty[A, B](implicit ord: Ordering[A]): CC[A, B]
2929

30-
def apply[A, B](elems: (A, B)*)(implicit ord: Ordering[A]): CC[A, B] = (newBuilder[A, B](ord) ++= elems).result()
30+
def apply[A, B](elems: (A, B)*)(implicit ord: Ordering[A]): CC[A, B] = {
31+
if (elems.isEmpty) empty
32+
else (newBuilder[A, B](ord) ++= elems).result()
33+
}
3134

3235
def newBuilder[A, B](implicit ord: Ordering[A]): Builder[(A, B), CC[A, B]] =
3336
new MapBuilder[A, B, CC[A, B]](empty(ord))

library/src/scala/collection/generic/SortedSetFactory.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ abstract class SortedSetFactory[CC[A] <: SortedSet[A] with SortedSetLike[A, CC[A
2626

2727
def empty[A](implicit ord: Ordering[A]): CC[A]
2828

29-
def apply[A](elems: A*)(implicit ord: Ordering[A]): CC[A] = (newBuilder[A](ord) ++= elems).result()
29+
def apply[A](elems: A*)(implicit ord: Ordering[A]): CC[A] = {
30+
if (elems isEmpty) empty
31+
else (newBuilder[A](ord) ++= elems).result()
32+
}
3033

3134
def newBuilder[A](implicit ord: Ordering[A]): Builder[A, CC[A]] = new SetBuilder[A, CC[A]](empty)
3235

library/src/scala/collection/immutable/SortedMap.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ object SortedMap extends ImmutableSortedMapFactory[SortedMap] {
127127
implicit def canBuildFrom[A, B](implicit ord: Ordering[A]): CanBuildFrom[Coll, (A, B), SortedMap[A, B]] = new SortedMapCanBuildFrom[A, B]
128128
def empty[A, B](implicit ord: Ordering[A]): SortedMap[A, B] = TreeMap.empty[A, B]
129129

130+
override def newBuilder[A, B](implicit ord: Ordering[A]): mutable.Builder[(A, B), SortedMap[A, B]] = TreeMap.newBuilder[A, B]
131+
130132
private[collection] trait Default[A, +B] extends SortedMap[A, B] with scala.collection.SortedMap.Default[A, B] {
131133
self =>
132134
override def +[B1 >: B](kv: (A, B1)): SortedMap[A, B1] = {

library/src/scala/collection/immutable/SortedSet.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ object SortedSet extends ImmutableSortedSetFactory[SortedSet] {
5353
/** $sortedSetCanBuildFromInfo */
5454
def canBuildFrom[A](implicit ord: Ordering[A]): CanBuildFrom[Coll, A, SortedSet[A]] = newCanBuildFrom[A]
5555
def empty[A](implicit ord: Ordering[A]): SortedSet[A] = TreeSet.empty[A]
56+
57+
override def newBuilder[A](implicit ord: Ordering[A]): mutable.Builder[A, SortedSet[A]] = TreeSet.newBuilder[A]
58+
5659
// Force a declaration here so that BitSet (which does not inherit from SortedSetFactory) can be more specific
5760
override implicit def newCanBuildFrom[A](implicit ord : Ordering[A]) : CanBuildFrom[Coll, A, SortedSet[A]] = super.newCanBuildFrom
5861
}

0 commit comments

Comments
 (0)