Skip to content

Commit 66c2965

Browse files
committed
iter: fix RangeInclusive's DoubleEndedIterator
1 parent bf7587f commit 66c2965

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/libstd/iter.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1829,11 +1829,11 @@ impl<A: Sub<A, A> + Integer + Ord + Clone> DoubleEndedIterator<A> for RangeInclu
18291829
let result = self.range.stop.clone();
18301830
self.range.stop = self.range.stop - self.range.one;
18311831
Some(result)
1832-
} else if self.done {
1833-
None
1834-
} else {
1832+
} else if !self.done && self.range.state == self.range.stop {
18351833
self.done = true;
18361834
Some(self.range.stop.clone())
1835+
} else {
1836+
None
18371837
}
18381838
}
18391839
}
@@ -2713,7 +2713,9 @@ mod tests {
27132713
assert_eq!(range_inclusive(0i, 5).collect::<~[int]>(), ~[0i, 1, 2, 3, 4, 5]);
27142714
assert_eq!(range_inclusive(0i, 5).invert().collect::<~[int]>(), ~[5i, 4, 3, 2, 1, 0]);
27152715
assert_eq!(range_inclusive(200, -5).collect::<~[int]>(), ~[]);
2716+
assert_eq!(range_inclusive(200, -5).invert().collect::<~[int]>(), ~[]);
27162717
assert_eq!(range_inclusive(200, 200).collect::<~[int]>(), ~[200]);
2718+
assert_eq!(range_inclusive(200, 200).invert().collect::<~[int]>(), ~[200]);
27172719
}
27182720

27192721
#[test]

0 commit comments

Comments
 (0)