diff --git a/deque/deque.mbt b/deque/deque.mbt index 0e15d813b..3b05f446d 100644 --- a/deque/deque.mbt +++ b/deque/deque.mbt @@ -1593,7 +1593,7 @@ pub fn[A] Deque::rev_iterator(self : Deque[A]) -> Iterator[A] { /// * `self` : The deque to iterate over. /// /// Returns an iterator that yields tuples of `(index, value)` pairs, where the -/// index starts from 0 and increments by 1, while values are taken from the +/// index starts from `length - 1` and decrements by 1, while values are taken from the /// deque in reverse order. /// /// Example: @@ -1602,7 +1602,7 @@ pub fn[A] Deque::rev_iterator(self : Deque[A]) -> Iterator[A] { /// let dq = @deque.of([1, 2, 3]) /// let mut s = "" /// dq.rev_iter2().each((i, x) => { s = s + "\{i}:\{x} " }) -/// inspect(s, content="0:3 1:2 2:1 ") +/// inspect(s, content="2:3 1:2 0:1 ") /// ``` pub fn[A] Deque::rev_iter2(self : Deque[A]) -> Iter2[Int, A] { Iter2::new(yield_ => { @@ -1610,20 +1610,20 @@ pub fn[A] Deque::rev_iter2(self : Deque[A]) -> Iter2[Int, A] { let { head, buf, len, .. } = self let cap = buf.length() let head_len = cap - head - let mut j = 0 + let mut j = len - 1 if head_len >= len { for i = head + len - 1; i >= head; i = i - 1 { guard yield_(j, buf[i]) is IterContinue else { return IterEnd } - j += 1 + j -= 1 } } else { for i = len - head_len - 1; i >= 0; i = i - 1 { guard yield_(j, buf[i]) is IterContinue else { return IterEnd } - j += 1 + j -= 1 } for i = cap - 1; i >= head; i = i - 1 { guard yield_(j, buf[i]) is IterContinue else { return IterEnd } - j += 1 + j -= 1 } } IterContinue diff --git a/deque/deque_test.mbt b/deque/deque_test.mbt index 68fd02355..f3b9e17b1 100644 --- a/deque/deque_test.mbt +++ b/deque/deque_test.mbt @@ -183,14 +183,14 @@ test "rev_each" { ///| test "rev_eachi" { let mut i = 6 - let mut j = 0 + let mut j = 6 let mut failed = false @deque.of([1, 2, 3, 4, 5]).rev_eachi((index, elem) => { - if index != j || elem != i - 1 { + if index != j - 2 || elem != i - 1 { failed = true } i = i - 1 - j = j + 1 + j = j - 1 }) assert_false(failed) } @@ -1096,7 +1096,7 @@ test "rev_iter2 when wrapped around" { dq.push_front(6) inspect( dq.rev_iter2(), - content="[(0, 5), (1, 4), (2, 3), (3, 2), (4, 1), (5, 6)]", + content="[(5, 5), (4, 4), (3, 3), (2, 2), (1, 1), (0, 6)]", ) }