diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-10-31 11:52:14 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-10-31 11:52:14 +0100 |
commit | 7d09097aac4a3f0e802fdbc539014ec6018efd79 (patch) | |
tree | fa2327f74226d7a59811203c1b6064321a26a637 /src/library/scala/collection/TraversableLike.scala | |
parent | c38235fd44f1ccb280e31a2f34f58deb59c5b2ee (diff) | |
download | scala-7d09097aac4a3f0e802fdbc539014ec6018efd79.tar.gz scala-7d09097aac4a3f0e802fdbc539014ec6018efd79.tar.bz2 scala-7d09097aac4a3f0e802fdbc539014ec6018efd79.zip |
Collections: remove redundant calls to .seq
Students of Scala's history might recall that at introduction of
parallel collections, GenIterable et al were *not* added; instead
the parallel collections inherited from the existing interfaces.
This of course was an invitation to widespread disaster as any
existing code that foreach-ed over a collection might now experience
unwanted concurrency.
The first attempt to fix this was to add the `.seq` method to
convert a parallel colleciton to a sequential one. This was added
in e579152f732, and call sites in the standard library with
side-effecting foreach calls were changed to use that.
But this was (rightly) deemed inadequate, as we could hardly expect
people to change existing code or remember to do this in new code.
So later, in 3de96153e5b, GenIterable was sprouted, and parallel
collections were re-parented.
This commit removes residual needless calls to .seq when the static
type of the receiver is already a plain Iterable, which are no-ops.
Diffstat (limited to 'src/library/scala/collection/TraversableLike.scala')
-rw-r--r-- | src/library/scala/collection/TraversableLike.scala | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/library/scala/collection/TraversableLike.scala b/src/library/scala/collection/TraversableLike.scala index 00f4de82cd..f02c00a312 100644 --- a/src/library/scala/collection/TraversableLike.scala +++ b/src/library/scala/collection/TraversableLike.scala @@ -481,7 +481,7 @@ trait TraversableLike[+A, +Repr] extends Any var follow = false val b = newBuilder b.sizeHint(this, -1) - for (x <- this.seq) { + for (x <- this) { if (follow) b += lst else follow = true lst = x @@ -506,7 +506,7 @@ trait TraversableLike[+A, +Repr] extends Any private[this] def sliceInternal(from: Int, until: Int, b: Builder[A, Repr]): Repr = { var i = 0 breakable { - for (x <- this.seq) { + for (x <- this) { if (i >= from) b += x i += 1 if (i >= until) break |