summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/Iterator.scala
diff options
context:
space:
mode:
authorErik Erlandson <eerlands@redhat.com>2014-09-04 11:10:13 -0700
committerErik Erlandson <eerlands@redhat.com>2014-10-21 19:06:41 -0700
commit59438d0647995f75bd1bf7159a248340d3708abd (patch)
treed1dd426ce8266ca117ab87523c89ecc1bd3d09e9 /src/library/scala/collection/Iterator.scala
parent850899b1c9347e804763a258f64d54cef0ffd69a (diff)
downloadscala-59438d0647995f75bd1bf7159a248340d3708abd.tar.gz
scala-59438d0647995f75bd1bf7159a248340d3708abd.tar.bz2
scala-59438d0647995f75bd1bf7159a248340d3708abd.zip
SI-8835 Fix implementation of Iterator drop to remove quadratic behavior
Diffstat (limited to 'src/library/scala/collection/Iterator.scala')
-rw-r--r--src/library/scala/collection/Iterator.scala9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/library/scala/collection/Iterator.scala b/src/library/scala/collection/Iterator.scala
index 660cc5a42a..0115cc154c 100644
--- a/src/library/scala/collection/Iterator.scala
+++ b/src/library/scala/collection/Iterator.scala
@@ -320,7 +320,14 @@ trait Iterator[+A] extends TraversableOnce[A] {
* it omits the first `n` values.
* @note Reuse: $consumesAndProducesIterator
*/
- def drop(n: Int): Iterator[A] = slice(n, Int.MaxValue)
+ def drop(n: Int): Iterator[A] = {
+ var j = 0
+ while (j < n && this.hasNext) {
+ this.next
+ j += 1
+ }
+ this
+ }
/** Creates an iterator returning an interval of the values produced by this iterator.
*