diff options
-rw-r--r-- | src/library/scala/collection/generic/package.scala | 6 | ||||
-rw-r--r-- | src/library/scala/collection/package.scala | 10 | ||||
-rw-r--r-- | test/files/pos/collectGenericCC.scala | 2 | ||||
-rw-r--r-- | test/files/run/breakout.check | 1 | ||||
-rw-r--r-- | test/files/run/breakout.scala | 9 |
5 files changed, 27 insertions, 1 deletions
diff --git a/src/library/scala/collection/generic/package.scala b/src/library/scala/collection/generic/package.scala new file mode 100644 index 0000000000..0457fef227 --- /dev/null +++ b/src/library/scala/collection/generic/package.scala @@ -0,0 +1,6 @@ +package scala.collection +import generic.CanBuildFrom + +package object generic { + type CanBuild[-Elem, +To] = CanBuildFrom[Nothing, Elem, To] +}
\ No newline at end of file diff --git a/src/library/scala/collection/package.scala b/src/library/scala/collection/package.scala new file mode 100644 index 0000000000..d5161a0f1a --- /dev/null +++ b/src/library/scala/collection/package.scala @@ -0,0 +1,10 @@ +package scala + +package object collection { + import scala.collection.generic.CanBuildFrom // can't refer to CanBuild here + + def breakOut[From, T, To](implicit b : CanBuildFrom[Nothing, T, To]) = + new CanBuildFrom[From, T, To] { + def apply(from: From) = b.apply() ; def apply() = b.apply() + } +}
\ No newline at end of file diff --git a/test/files/pos/collectGenericCC.scala b/test/files/pos/collectGenericCC.scala index 9840f1071d..099a53d3f5 100644 --- a/test/files/pos/collectGenericCC.scala +++ b/test/files/pos/collectGenericCC.scala @@ -2,7 +2,7 @@ import scala.collection.generic._ import scala.collection._ object Test { - def collect[A, Res](r: Traversable[A])(implicit bf: CanBuildFrom[Nothing, A, Res]) = { + def collect[A, Res](r: Traversable[A])(implicit bf: CanBuild[A, Res]) = { val b = bf() for (a <- r) b += a b.result diff --git a/test/files/run/breakout.check b/test/files/run/breakout.check new file mode 100644 index 0000000000..7971496d1f --- /dev/null +++ b/test/files/run/breakout.check @@ -0,0 +1 @@ +2, 3, 4 diff --git a/test/files/run/breakout.scala b/test/files/run/breakout.scala new file mode 100644 index 0000000000..01ea08846e --- /dev/null +++ b/test/files/run/breakout.scala @@ -0,0 +1,9 @@ +import scala.collection.generic._ +import scala.collection._ +import scala.collection.mutable._ + +object Test extends Application { + val l = List(1, 2, 3) + val a: Array[Int] = l.map(_ + 1)(breakOut) + println(a.mkString(", ")) +}
\ No newline at end of file |