Skip to content

Commit 78111e8

Browse files
committed
---
yaml --- r: 142897 b: refs/heads/try2 c: db0a13b h: refs/heads/master i: 142895: 6dae4f3 v: v3
1 parent 938cac8 commit 78111e8

File tree

7 files changed

+22
-20
lines changed

7 files changed

+22
-20
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: 3c19f1bca83be3f4abef378d0a4cd852c8615164
8+
refs/heads/try2: db0a13b9865510ec07f7597e11009eabc2676afc
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/src/libextra/smallintmap.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ impl<V> SmallIntMap<V> {
159159
/// Visit all key-value pairs in reverse order
160160
pub fn each_reverse<'a>(&'a self, it: &fn(uint, &'a V) -> bool) -> bool {
161161
for uint::range_rev(self.v.len(), 0) |i| {
162-
match self.v[i - 1] {
163-
Some(ref elt) => if !it(i - 1, elt) { return false; },
162+
match self.v[i] {
163+
Some(ref elt) => if !it(i, elt) { return false; },
164164
None => ()
165165
}
166166
}

branches/try2/src/libstd/num/int_macros.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,10 @@ pub fn range(lo: $T, hi: $T, it: &fn($T) -> bool) -> bool {
132132
}
133133
134134
#[inline]
135-
/// Iterate over the range [`hi`..`lo`)
135+
/// Iterate over the range (`hi`..`lo`]
136136
pub fn range_rev(hi: $T, lo: $T, it: &fn($T) -> bool) -> bool {
137-
range_step(hi, lo, -1 as $T, it)
137+
if hi == min_value { return true; }
138+
range_step_inclusive(hi-1, lo, -1 as $T, it)
138139
}
139140
140141
impl Num for $T {}
@@ -897,7 +898,7 @@ mod tests {
897898
for range(0,3) |i| {
898899
l.push(i);
899900
}
900-
for range_rev(13,10) |i| {
901+
for range_rev(14,11) |i| {
901902
l.push(i);
902903
}
903904
for range_step(20,26,2) |i| {

branches/try2/src/libstd/num/uint_macros.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,10 @@ pub fn range(lo: $T, hi: $T, it: &fn($T) -> bool) -> bool {
132132
}
133133

134134
#[inline]
135-
/// Iterate over the range [`hi`..`lo`)
135+
/// Iterate over the range (`hi`..`lo`]
136136
pub fn range_rev(hi: $T, lo: $T, it: &fn($T) -> bool) -> bool {
137-
range_step(hi, lo, -1 as $T_SIGNED, it)
137+
if hi == min_value { return true; }
138+
range_step_inclusive(hi-1, lo, -1 as $T_SIGNED, it)
138139
}
139140

140141
impl Num for $T {}
@@ -662,7 +663,7 @@ mod tests {
662663
for range(0,3) |i| {
663664
l.push(i);
664665
}
665-
for range_rev(13,10) |i| {
666+
for range_rev(14,11) |i| {
666667
l.push(i);
667668
}
668669
for range_step(20,26,2) |i| {

branches/try2/src/libstd/run.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ fn spawn_process_os(prog: &str, args: &[~str],
669669
fail!("failure in dup3(err_fd, 2): %s", os::last_os_error());
670670
}
671671
// close all other fds
672-
for int::range_rev(getdtablesize() as int - 1, 2) |fd| {
672+
for int::range_rev(getdtablesize() as int, 3) |fd| {
673673
close(fd as c_int);
674674
}
675675

branches/try2/src/libstd/trie.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ impl<T> TrieNode<T> {
261261

262262
fn each_reverse<'a>(&'a self, f: &fn(&uint, &'a T) -> bool) -> bool {
263263
for uint::range_rev(self.children.len(), 0) |idx| {
264-
match self.children[idx - 1] {
264+
match self.children[idx] {
265265
Internal(ref x) => if !x.each_reverse(|i,t| f(i,t)) { return false },
266266
External(k, ref v) => if !f(&k, v) { return false },
267267
Nothing => ()

branches/try2/src/test/run-pass/num-range-rev.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@ pub fn main() {
4040
// int and uint have same result for
4141
// Sum{100 > i >= 2} == (Sum{1 <= i <= 99} - 1) == n*(n+1)/2 - 1 for n=99
4242
let mut sum = 0u;
43-
for uint_range_rev(99, 1) |i| {
43+
for uint_range_rev(100, 2) |i| {
4444
sum += i;
4545
}
4646
assert_eq!(sum, 4949);
4747

4848
let mut sum = 0i;
49-
for int_range_rev(99, 1) |i| {
49+
for int_range_rev(100, 2) |i| {
5050
sum += i;
5151
}
5252
assert_eq!(sum, 4949);
@@ -55,17 +55,17 @@ pub fn main() {
5555
// elements are visited in correct order
5656
let primes = [2,3,5,7,11];
5757
let mut prod = 1i;
58-
for uint_range_rev(4, 0) |i| {
58+
for uint_range_rev(5, 0) |i| {
5959
println(fmt!("uint 4 downto 0: %u", i));
6060
prod *= int::pow(primes[i], i);
6161
}
62-
assert_eq!(prod, 11*11*11*11*7*7*7*5*5*3);
62+
assert_eq!(prod, 11*11*11*11*7*7*7*5*5*3*1);
6363
let mut prod = 1i;
64-
for int_range_rev(4, 0) |i| {
64+
for int_range_rev(5, 0) |i| {
6565
println(fmt!("int 4 downto 0: %d", i));
6666
prod *= int::pow(primes[i], i as uint);
6767
}
68-
assert_eq!(prod, 11*11*11*11*7*7*7*5*5*3);
68+
assert_eq!(prod, 11*11*11*11*7*7*7*5*5*3*1);
6969

7070

7171
// range and range_rev are symmetric.
@@ -74,7 +74,7 @@ pub fn main() {
7474
sum_up += i;
7575
}
7676
let mut sum_down = 0u;
77-
for uint_range_rev(29, 9) |i| {
77+
for uint_range_rev(30, 10) |i| {
7878
sum_down += i;
7979
}
8080
assert_eq!(sum_up, sum_down);
@@ -84,7 +84,7 @@ pub fn main() {
8484
sum_up += i;
8585
}
8686
let mut sum_down = 0;
87-
for int_range_rev(9, -21) |i| {
87+
for int_range_rev(10, -20) |i| {
8888
sum_down += i;
8989
}
9090
assert_eq!(sum_up, sum_down);
@@ -96,7 +96,7 @@ pub fn main() {
9696
}
9797

9898
for uint_range_rev(0, 1) |_| {
99-
// fail!("range should be empty when start-1 underflows");
99+
fail!("range should be empty when start-1 underflows");
100100
}
101101

102102
// range iterations do not wrap/underflow

0 commit comments

Comments
 (0)