diff options
author | Rex Kerr <ichoran@gmail.com> | 2014-11-23 18:28:05 -0800 |
---|---|---|
committer | Rex Kerr <ichoran@gmail.com> | 2014-12-06 13:57:40 -0800 |
commit | ff1b66744381240c5037be8f9a447cf28a3074be (patch) | |
tree | 09b73f9b7418388771eeb84865c986c7c65f8154 /src/library/scala/collection/immutable/StreamViewLike.scala | |
parent | f13fc65f38821dd06da35c488f2be89efec20a4c (diff) | |
download | scala-ff1b66744381240c5037be8f9a447cf28a3074be.tar.gz scala-ff1b66744381240c5037be8f9a447cf28a3074be.tar.bz2 scala-ff1b66744381240c5037be8f9a447cf28a3074be.zip |
SI-8691 SeqView throws exception when prepending a collection
Prepend was throwing segfaults as it was handled differently from Append. This brings the two into line with each other.
There are various optimizations that could be applied that have not been, however, such as intercepting sequential prepends and generating one multi-prepend instead of nested single-element prepends.
Unit test added to verify minimally that bug is gone.
Diffstat (limited to 'src/library/scala/collection/immutable/StreamViewLike.scala')
-rw-r--r-- | src/library/scala/collection/immutable/StreamViewLike.scala | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/library/scala/collection/immutable/StreamViewLike.scala b/src/library/scala/collection/immutable/StreamViewLike.scala index c2eb85815d..4d7eaeff2a 100644 --- a/src/library/scala/collection/immutable/StreamViewLike.scala +++ b/src/library/scala/collection/immutable/StreamViewLike.scala @@ -53,6 +53,7 @@ extends SeqView[A, Coll] /** boilerplate */ protected override def newForced[B](xs: => scala.collection.GenSeq[B]): Transformed[B] = new { val forced = xs } with AbstractTransformed[B] with Forced[B] protected override def newAppended[B >: A](that: scala.collection.GenTraversable[B]): Transformed[B] = new { val rest = that } with AbstractTransformed[B] with Appended[B] + protected override def newPrepended[B >: A](that: scala.collection.GenTraversable[B]): Transformed[B] = new { protected[this] val fst = that } with AbstractTransformed[B] with Prepended[B] protected override def newMapped[B](f: A => B): Transformed[B] = new { val mapping = f } with AbstractTransformed[B] with Mapped[B] protected override def newFlatMapped[B](f: A => scala.collection.GenTraversableOnce[B]): Transformed[B] = new { val mapping = f } with AbstractTransformed[B] with FlatMapped[B] protected override def newFiltered(p: A => Boolean): Transformed[A] = new { val pred = p } with AbstractTransformed[A] with Filtered @@ -67,7 +68,6 @@ extends SeqView[A, Coll] protected override def newPatched[B >: A](_from: Int, _patch: scala.collection.GenSeq[B], _replaced: Int): Transformed[B] = { new { val from = _from; val patch = _patch; val replaced = _replaced } with AbstractTransformed[B] with Patched[B] } - protected override def newPrepended[B >: A](elem: B): Transformed[B] = new { protected[this] val fst = elem } with AbstractTransformed[B] with Prepended[B] override def stringPrefix = "StreamView" } |