summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/IterableLike.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2010-05-10 15:52:25 +0000
committerMartin Odersky <odersky@gmail.com>2010-05-10 15:52:25 +0000
commitbfb49242b5ca6ffdd086364b33fa3f785254784d (patch)
tree8504ce3c0b60e1b8be5f29c8940f97e5ca24162e /src/library/scala/collection/IterableLike.scala
parentdb50a62b625d9685394557fad3a1a101c843df07 (diff)
downloadscala-bfb49242b5ca6ffdd086364b33fa3f785254784d.tar.gz
scala-bfb49242b5ca6ffdd086364b33fa3f785254784d.tar.bz2
scala-bfb49242b5ca6ffdd086364b33fa3f785254784d.zip
Added sizeHints to operations where it made sense.
Diffstat (limited to 'src/library/scala/collection/IterableLike.scala')
-rw-r--r--src/library/scala/collection/IterableLike.scala4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/library/scala/collection/IterableLike.scala b/src/library/scala/collection/IterableLike.scala
index 0efc756b10..06909961ce 100644
--- a/src/library/scala/collection/IterableLike.scala
+++ b/src/library/scala/collection/IterableLike.scala
@@ -104,6 +104,7 @@ self =>
override /*TraversableLike*/ def take(n: Int): Repr = {
val b = newBuilder
+ b.sizeHintBounded(n, this)
var i = 0
val it = iterator
while (i < n && it.hasNext) {
@@ -115,6 +116,7 @@ self =>
override /*TraversableLike*/ def slice(from: Int, until: Int): Repr = {
val b = newBuilder
+ b.sizeHintBounded(until - from, this)
var i = from
val it = iterator drop from
while (i < until && it.hasNext) {
@@ -176,6 +178,7 @@ self =>
*/
def takeRight(n: Int): Repr = {
val b = newBuilder
+ b.sizeHintBounded(n, this)
val lead = this.iterator drop n
var go = false
for (x <- this) {
@@ -195,6 +198,7 @@ self =>
*/
def dropRight(n: Int): Repr = {
val b = newBuilder
+ if (n >= 0) b.sizeHint(this, -n)
val lead = iterator drop n
val it = iterator
while (lead.hasNext) {