summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library/scala/collection/IndexedSeqLike.scala4
-rw-r--r--test/files/run/iterator3444.scala23
2 files changed, 25 insertions, 2 deletions
diff --git a/src/library/scala/collection/IndexedSeqLike.scala b/src/library/scala/collection/IndexedSeqLike.scala
index 747f809886..1ad1da715d 100644
--- a/src/library/scala/collection/IndexedSeqLike.scala
+++ b/src/library/scala/collection/IndexedSeqLike.scala
@@ -68,14 +68,14 @@ trait IndexedSeqLike[+A, +Repr] extends SeqLike[A, Repr] { self =>
* '''Note:''' `drop` is overridden to enable fast searching in the middle of indexed sequences.
*/
override def drop(n: Int): Iterator[A] =
- if (n > 0) new Elements(start + n, end) else this
+ if (n > 0) new Elements(i + n, end) else this
/** $super
* '''Note:''' `take` is overridden to be symmetric to `drop`.
*/
override def take(n: Int): Iterator[A] =
if (n <= 0) Iterator.empty.buffered
- else if (start + n < end) new Elements(start, start + n)
+ else if (i + n < end) new Elements(i, i + n)
else this
}
diff --git a/test/files/run/iterator3444.scala b/test/files/run/iterator3444.scala
new file mode 100644
index 0000000000..1d0713addc
--- /dev/null
+++ b/test/files/run/iterator3444.scala
@@ -0,0 +1,23 @@
+
+
+// ticked #3444
+object Test {
+
+ def main(args: Array[String]) {
+ val it = (1 to 12).toSeq.iterator
+
+ assert(it.next == 1)
+ assert(it.take(2).toList == List(2, 3))
+
+ val jt = (4 to 12).toSeq.iterator
+ assert(jt.next == 4)
+ assert(jt.drop(5).toList == List(10, 11, 12))
+
+ val kt = (1 until 10).toSeq.iterator
+ assert(kt.drop(50).toList == Nil)
+
+ val mt = (1 until 5).toSeq.iterator
+ assert(mt.take(50).toList == List(1, 2, 3, 4))
+ }
+
+}