about summary refs log tree commit diff
path: root/src/libcore/tests
diff options
context:
space:
mode:
authorScott McMurray <scottmcm@users.noreply.github.com>2018-02-07 11:11:54 -0800
committerScott McMurray <scottmcm@users.noreply.github.com>2018-02-07 11:11:54 -0800
commit27d4d51670710aa44a73baf04130bc262b8de244 (patch)
treece275ba2bd606e77c189c918ebfcffbaa2f7dfae /src/libcore/tests
parent4f93357d3b8938dfe439329c43c1e4f919a70869 (diff)
downloadrust-27d4d51670710aa44a73baf04130bc262b8de244.tar.gz
rust-27d4d51670710aa44a73baf04130bc262b8de244.zip
Simplify RangeInclusive::next[_back]
`match`ing on an `Option<Ordering>` seems cause some confusion for LLVM; switching to just using comparison operators removes a few jumps from the simple `for` loops I was trying.
Diffstat (limited to 'src/libcore/tests')
-rw-r--r--src/libcore/tests/iter.rs19
1 files changed, 19 insertions, 0 deletions
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
@@ -1333,6 +1333,18 @@ fn test_range_inclusive_exhaustion() {
     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]