diff options
author | James Iry <jamesiry@gmail.com> | 2013-02-06 11:49:45 -0800 |
---|---|---|
committer | James Iry <jamesiry@gmail.com> | 2013-02-06 11:49:45 -0800 |
commit | b99af13e7046d4270e0826d63c1b6cca9f41722f (patch) | |
tree | 9b878e0cf27357a96707aa87b7b452b70a8851cf /src | |
parent | 558c059227b498707a8bc7eb7f29297475e7720e (diff) | |
parent | 87d52db6e6a51e281a927c7ddb0f9d69a9ae0771 (diff) | |
download | scala-b99af13e7046d4270e0826d63c1b6cca9f41722f.tar.gz scala-b99af13e7046d4270e0826d63c1b6cca9f41722f.tar.bz2 scala-b99af13e7046d4270e0826d63c1b6cca9f41722f.zip |
Merge pull request #2064 from JamesIry/2.10.x_SI-6773
[nomaster] SI-6773 Makes the SI-6150 changes binary compatible with 2.10
Diffstat (limited to 'src')
5 files changed, 19 insertions, 27 deletions
diff --git a/src/library/scala/collection/IndexedSeq.scala b/src/library/scala/collection/IndexedSeq.scala index 63e5adf428..2de0043c96 100644 --- a/src/library/scala/collection/IndexedSeq.scala +++ b/src/library/scala/collection/IndexedSeq.scala @@ -28,10 +28,10 @@ trait IndexedSeq[+A] extends Seq[A] * @define coll indexed sequence * @define Coll `IndexedSeq` */ -object IndexedSeq extends IndexedSeqFactory[IndexedSeq] { +object IndexedSeq extends SeqFactory[IndexedSeq] { // A single CBF which can be checked against to identify // an indexed collection type. - override val ReusableCBF: GenericCanBuildFrom[Nothing] = new GenericCanBuildFrom[Nothing] { + override lazy val ReusableCBF: GenericCanBuildFrom[Nothing] = new GenericCanBuildFrom[Nothing] { override def apply() = newBuilder[Nothing] } def newBuilder[A]: Builder[A, IndexedSeq[A]] = immutable.IndexedSeq.newBuilder[A] diff --git a/src/library/scala/collection/generic/GenTraversableFactory.scala b/src/library/scala/collection/generic/GenTraversableFactory.scala index a43862abaf..2d3f7e609b 100644 --- a/src/library/scala/collection/generic/GenTraversableFactory.scala +++ b/src/library/scala/collection/generic/GenTraversableFactory.scala @@ -38,10 +38,12 @@ import scala.language.higherKinds abstract class GenTraversableFactory[CC[X] <: GenTraversable[X] with GenericTraversableTemplate[X, CC]] extends GenericCompanion[CC] { - private[this] val ReusableCBFInstance: GenericCanBuildFrom[Nothing] = new GenericCanBuildFrom[Nothing] { + // A default implementation of GenericCanBuildFrom which can be cast + // to whatever is desired. + private class ReusableCBF extends GenericCanBuildFrom[Nothing] { override def apply() = newBuilder[Nothing] } - def ReusableCBF: GenericCanBuildFrom[Nothing] = ReusableCBFInstance + lazy val ReusableCBF: GenericCanBuildFrom[Nothing] = new ReusableCBF /** A generic implementation of the `CanBuildFrom` trait, which forwards * all calls to `apply(from)` to the `genericBuilder` method of diff --git a/src/library/scala/collection/generic/IndexedSeqFactory.scala b/src/library/scala/collection/generic/IndexedSeqFactory.scala deleted file mode 100644 index 200d033c2d..0000000000 --- a/src/library/scala/collection/generic/IndexedSeqFactory.scala +++ /dev/null @@ -1,21 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2011, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -package scala.collection -package generic - -import language.higherKinds - -/** A template for companion objects of IndexedSeq and subclasses thereof. - * - * @since 2.10 - */ -abstract class IndexedSeqFactory[CC[X] <: IndexedSeq[X] with GenericTraversableTemplate[X, CC]] extends SeqFactory[CC] { - override def ReusableCBF: GenericCanBuildFrom[Nothing] = - scala.collection.IndexedSeq.ReusableCBF.asInstanceOf[GenericCanBuildFrom[Nothing]] -} diff --git a/src/library/scala/collection/immutable/IndexedSeq.scala b/src/library/scala/collection/immutable/IndexedSeq.scala index bf4ba3a381..96414c07ef 100644 --- a/src/library/scala/collection/immutable/IndexedSeq.scala +++ b/src/library/scala/collection/immutable/IndexedSeq.scala @@ -31,7 +31,9 @@ trait IndexedSeq[+A] extends Seq[A] * @define coll indexed sequence * @define Coll `IndexedSeq` */ -object IndexedSeq extends IndexedSeqFactory[IndexedSeq] { +object IndexedSeq extends SeqFactory[IndexedSeq] { + override lazy val ReusableCBF = + scala.collection.IndexedSeq.ReusableCBF.asInstanceOf[GenericCanBuildFrom[Nothing]] class Impl[A](buf: ArrayBuffer[A]) extends AbstractSeq[A] with IndexedSeq[A] with Serializable { def length = buf.length def apply(idx: Int) = buf.apply(idx) diff --git a/src/library/scala/collection/immutable/Vector.scala b/src/library/scala/collection/immutable/Vector.scala index f083e80175..bcce4a99bd 100644 --- a/src/library/scala/collection/immutable/Vector.scala +++ b/src/library/scala/collection/immutable/Vector.scala @@ -18,7 +18,16 @@ import scala.collection.parallel.immutable.ParVector /** Companion object to the Vector class */ -object Vector extends IndexedSeqFactory[Vector] { +object Vector extends SeqFactory[Vector] { + // left lying around for binary compatibility check + private[collection] class VectorReusableCBF extends GenericCanBuildFrom[Nothing] { + override def apply() = newBuilder[Nothing] + } + // left lying around for binary compatibility check + private val VectorReusableCBF: GenericCanBuildFrom[Nothing] = new VectorReusableCBF + + override lazy val ReusableCBF = + scala.collection.IndexedSeq.ReusableCBF.asInstanceOf[GenericCanBuildFrom[Nothing]] def newBuilder[A]: Builder[A, Vector[A]] = new VectorBuilder[A] implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Vector[A]] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]] |