diff --git a/compat/src/main/scala-2.11/scala/collection/compat/package.scala b/compat/src/main/scala-2.11/scala/collection/compat/package.scala index 39dda6c4..bf713e54 100644 --- a/compat/src/main/scala-2.11/scala/collection/compat/package.scala +++ b/compat/src/main/scala-2.11/scala/collection/compat/package.scala @@ -12,10 +12,15 @@ package scala.collection -import scala.collection.generic.IsTraversableLike +import scala.collection.generic.{CanBuildFrom, GenericOrderedCompanion, IsTraversableLike} import scala.{collection => c} package object compat extends compat.PackageShared { + implicit def genericOrderedCompanionToCBF[A, CC[X] <: Traversable[X]]( + fact: GenericOrderedCompanion[CC])( + implicit ordering: Ordering[A]): CanBuildFrom[Any, A, CC[A]] = + CompatImpl.simpleCBF(fact.newBuilder[A]) + implicit def toTraversableLikeExtensionMethods[Repr](self: Repr)( implicit traversable: IsTraversableLike[Repr]) : TraversableLikeExtensionMethods[traversable.A, Repr] = diff --git a/compat/src/main/scala-2.12/scala/collection/compat/package.scala b/compat/src/main/scala-2.12/scala/collection/compat/package.scala index 346f437b..c73d66a6 100644 --- a/compat/src/main/scala-2.12/scala/collection/compat/package.scala +++ b/compat/src/main/scala-2.12/scala/collection/compat/package.scala @@ -12,7 +12,7 @@ package scala.collection -import scala.collection.generic.IsTraversableLike +import scala.collection.generic.{CanBuildFrom, GenericOrderedCompanion, IsTraversableLike} import scala.{collection => c} import scala.collection.{mutable => m} @@ -27,6 +27,11 @@ package object compat extends compat.PackageShared { build(m.SortedMap.newBuilder[K, V], source) } + implicit def genericOrderedCompanionToCBF[A, CC[X] <: Traversable[X]]( + fact: GenericOrderedCompanion[CC])( + implicit ordering: Ordering[A]): CanBuildFrom[Any, A, CC[A]] = + CompatImpl.simpleCBF(fact.newBuilder[A]) + implicit def toTraversableLikeExtensionMethods[Repr](self: Repr)( implicit traversable: IsTraversableLike[Repr]) : TraversableLikeExtensionMethods[traversable.A, Repr] = diff --git a/compat/src/test/scala/test/scala/collection/CollectionTest.scala b/compat/src/test/scala/test/scala/collection/CollectionTest.scala index 730a7386..96c73da9 100644 --- a/compat/src/test/scala/test/scala/collection/CollectionTest.scala +++ b/compat/src/test/scala/test/scala/collection/CollectionTest.scala @@ -17,6 +17,7 @@ import org.junit.Test import scala.collection.compat._ import scala.collection.immutable.BitSet +import scala.collection.mutable.PriorityQueue import scala.collection.LinearSeq class CollectionTest { @@ -35,6 +36,10 @@ class CollectionTest { val bT: BitSet = b assertEquals(BitSet(1, 2, 3), b) + val c = xs.to(PriorityQueue) + val cT: PriorityQueue[Int] = c + assert(PriorityQueue(1, 2, 3) sameElements c) + val ys = List(1 -> "a", 2 -> "b") val m = ys.to(Map) // Not possible - `to` returns a Col[A] so this is only typed as an Iterable[(Int, String)]