From 27d4d51670710aa44a73baf04130bc262b8de244 Mon Sep 17 00:00:00 2001 From: Scott McMurray Date: Wed, 7 Feb 2018 11:11:54 -0800 Subject: Simplify RangeInclusive::next[_back] `match`ing on an `Option` seems cause some confusion for LLVM; switching to just using comparison operators removes a few jumps from the simple `for` loops I was trying. --- src/libcore/tests/iter.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/libcore/tests') diff --git a/src/libcore/tests/iter.rs b/src/libcore/tests/iter.rs index dc866d180bf..c742a1d8048 100644 --- a/src/libcore/tests/iter.rs +++ b/src/libcore/tests/iter.rs @@ -1332,6 +1332,18 @@ fn test_range_inclusive_exhaustion() { assert_eq!(r.next_back(), Some(10)); assert_eq!(r, 1..=0); + let mut r = 10..=12; + assert_eq!(r.next(), Some(10)); + assert_eq!(r.next(), Some(11)); + assert_eq!(r.next(), Some(12)); + assert_eq!(r, 1..=0); + + let mut r = 10..=12; + assert_eq!(r.next_back(), Some(12)); + assert_eq!(r.next_back(), Some(11)); + assert_eq!(r.next_back(), Some(10)); + assert_eq!(r, 1..=0); + let mut r = 10..=12; assert_eq!(r.nth(2), Some(12)); assert_eq!(r, 1..=0); @@ -1340,6 +1352,13 @@ fn test_range_inclusive_exhaustion() { assert_eq!(r.nth(5), None); assert_eq!(r, 1..=0); + let mut r = 100..=10; + assert_eq!(r.next(), None); + assert_eq!(r, 100..=10); + + let mut r = 100..=10; + assert_eq!(r.next_back(), None); + assert_eq!(r, 100..=10); } #[test] -- cgit 1.4.1-3-g733a5