Skip to content

Commit bde60ee

Browse files
committed
---
yaml --- r: 23663 b: refs/heads/master c: aea4220 h: refs/heads/master i: 23661: 62ab21d 23659: 3573822 23655: 22fdf99 23647: df9ef05 v: v3
1 parent a15c118 commit bde60ee

File tree

9 files changed

+51
-31
lines changed

9 files changed

+51
-31
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 134e5c85a24cd622c2ce4e47d52bd2a1bb0e63e8
2+
refs/heads/master: aea422014bb16a799522acbae3c7986052dde056
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
55
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be

trunk/src/cargo/cargo.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1499,8 +1499,7 @@ fn print_pkg(s: source, p: package) {
14991499
fn print_source(s: source) {
15001500
info(s.name + ~" (" + s.url + ~")");
15011501

1502-
let unsorted_pks = s.packages; // to prevent illegal borrow?
1503-
let pks = sort::merge_sort(sys::shape_lt, unsorted_pks);
1502+
let pks = sort::merge_sort(sys::shape_lt, copy s.packages);
15041503
let l = vec::len(pks);
15051504

15061505
print(io::with_str_writer(|writer| {

trunk/src/libstd/base64.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#[forbid(deprecated_mode)];
2-
#[forbid(deprecated_pattern)];
31
#[deny(non_camel_case_types)];
42
import io::Reader;
53

trunk/src/libstd/cell.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#[forbid(deprecated_mode)];
2-
#[forbid(deprecated_pattern)];
31
/// A dynamic, mutable location.
42
///
53
/// Similar to a mutable option type, but friendlier.

trunk/src/libstd/fun_treemap.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
#[deny(non_camel_case_types)];
2-
#[forbid(deprecated_mode)];
3-
#[forbid(deprecated_pattern)];
42

53
/*!
64
* A functional key,value store that works on anything.
@@ -34,8 +32,8 @@ enum TreeNode<K, V> {
3432
fn init<K, V>() -> Treemap<K, V> { @Empty }
3533

3634
/// Insert a value into the map
37-
fn insert<K: copy Eq Ord, V: copy>(m: Treemap<K, V>, +k: K, +v: V)
38-
-> Treemap<K, V> {
35+
fn insert<K: copy Eq Ord, V: copy>(m: Treemap<K, V>, k: K, v: V)
36+
-> Treemap<K, V> {
3937
@match m {
4038
@Empty => Node(@k, @v, @Empty, @Empty),
4139
@Node(@kk, vv, left, right) => {
@@ -49,7 +47,7 @@ fn insert<K: copy Eq Ord, V: copy>(m: Treemap<K, V>, +k: K, +v: V)
4947
}
5048

5149
/// Find a value based on the key
52-
fn find<K: Eq Ord, V: copy>(m: Treemap<K, V>, +k: K) -> Option<V> {
50+
fn find<K: Eq Ord, V: copy>(m: Treemap<K, V>, k: K) -> Option<V> {
5351
match *m {
5452
Empty => None,
5553
Node(@kk, @v, left, right) => {

trunk/src/libstd/map.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
//! A map type
22
3-
#[forbid(deprecated_mode)];
4-
#[forbid(deprecated_pattern)];
3+
#[warn(deprecated_mode)];
54

65
import io::WriterUtil;
76
import to_str::ToStr;

trunk/src/libstd/sort.rs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
//! Sorting methods
2-
#[forbid(deprecated_mode)];
3-
#[forbid(deprecated_pattern)];
4-
52
import vec::{len, push};
63
import core::cmp::{Eq, Ord};
74

@@ -18,12 +15,12 @@ type le<T> = pure fn(v1: &T, v2: &T) -> bool;
1815
* Has worst case O(n log n) performance, best case O(n), but
1916
* is not space efficient. This is a stable sort.
2017
*/
21-
fn merge_sort<T: copy>(le: le<T>, v: &[const T]) -> ~[T] {
18+
fn merge_sort<T: copy>(le: le<T>, v: ~[const T]) -> ~[T] {
2219
type slice = (uint, uint);
2320

2421
return merge_sort_(le, v, (0u, len(v)));
2522

26-
fn merge_sort_<T: copy>(le: le<T>, v: &[const T], slice: slice)
23+
fn merge_sort_<T: copy>(le: le<T>, v: ~[const T], slice: slice)
2724
-> ~[T] {
2825
let begin = slice.first();
2926
let end = slice.second();
@@ -38,7 +35,7 @@ fn merge_sort<T: copy>(le: le<T>, v: &[const T]) -> ~[T] {
3835
return merge(le, merge_sort_(le, v, a), merge_sort_(le, v, b));
3936
}
4037

41-
fn merge<T: copy>(le: le<T>, a: &[T], b: &[T]) -> ~[T] {
38+
fn merge<T: copy>(le: le<T>, a: ~[T], b: ~[T]) -> ~[T] {
4239
let mut rs = ~[];
4340
vec::reserve(rs, len(a) + len(b));
4441
let a_len = len(a);
@@ -57,7 +54,7 @@ fn merge_sort<T: copy>(le: le<T>, v: &[const T]) -> ~[T] {
5754
}
5855
}
5956

60-
fn part<T: copy>(compare_func: le<T>, arr: &[mut T], left: uint,
57+
fn part<T: copy>(compare_func: le<T>, arr: ~[mut T], left: uint,
6158
right: uint, pivot: uint) -> uint {
6259
let pivot_value = arr[pivot];
6360
arr[pivot] <-> arr[right];
@@ -74,7 +71,7 @@ fn part<T: copy>(compare_func: le<T>, arr: &[mut T], left: uint,
7471
return storage_index;
7572
}
7673

77-
fn qsort<T: copy>(compare_func: le<T>, arr: &[mut T], left: uint,
74+
fn qsort<T: copy>(compare_func: le<T>, arr: ~[mut T], left: uint,
7875
right: uint) {
7976
if right > left {
8077
let pivot = (left + right) / 2u;
@@ -93,12 +90,12 @@ fn qsort<T: copy>(compare_func: le<T>, arr: &[mut T], left: uint,
9390
* Has worst case O(n^2) performance, average case O(n log n).
9491
* This is an unstable sort.
9592
*/
96-
fn quick_sort<T: copy>(compare_func: le<T>, arr: &[mut T]) {
93+
fn quick_sort<T: copy>(compare_func: le<T>, arr: ~[mut T]) {
9794
if len::<T>(arr) == 0u { return; }
9895
qsort::<T>(compare_func, arr, 0u, len::<T>(arr) - 1u);
9996
}
10097

101-
fn qsort3<T: copy Ord Eq>(arr: &[mut T], left: int, right: int) {
98+
fn qsort3<T: copy Ord Eq>(arr: ~[mut T], left: int, right: int) {
10299
if right <= left { return; }
103100
let v: T = arr[right];
104101
let mut i: int = left - 1;
@@ -155,14 +152,14 @@ fn qsort3<T: copy Ord Eq>(arr: &[mut T], left: int, right: int) {
155152
*
156153
* This is an unstable sort.
157154
*/
158-
fn quick_sort3<T: copy Ord Eq>(arr: &[mut T]) {
155+
fn quick_sort3<T: copy Ord Eq>(arr: ~[mut T]) {
159156
if arr.len() <= 1 { return; }
160157
qsort3(arr, 0, (arr.len() - 1) as int);
161158
}
162159

163160
#[cfg(test)]
164161
mod test_qsort3 {
165-
fn check_sort(v1: &[mut int], v2: &[mut int]) {
162+
fn check_sort(v1: ~[mut int], v2: ~[mut int]) {
166163
let len = vec::len::<int>(v1);
167164
quick_sort3::<int>(v1);
168165
let mut i = 0u;
@@ -201,7 +198,7 @@ mod test_qsort3 {
201198

202199
#[cfg(test)]
203200
mod test_qsort {
204-
fn check_sort(v1: &[mut int], v2: &[mut int]) {
201+
fn check_sort(v1: ~[mut int], v2: ~[mut int]) {
205202
let len = vec::len::<int>(v1);
206203
pure fn leual(a: &int, b: &int) -> bool { *a <= *b }
207204
quick_sort::<int>(leual, v1);
@@ -261,7 +258,7 @@ mod test_qsort {
261258
#[cfg(test)]
262259
mod tests {
263260

264-
fn check_sort(v1: &[int], v2: &[int]) {
261+
fn check_sort(v1: ~[int], v2: ~[int]) {
265262
let len = vec::len::<int>(v1);
266263
pure fn le(a: &int, b: &int) -> bool { *a <= *b }
267264
let f = le;

trunk/src/libstd/unicode.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#[forbid(deprecated_mode)];
2-
#[forbid(deprecated_pattern)];
31

42
mod icu {
53
type UBool = u8;
@@ -233,4 +231,4 @@ mod tests {
233231
assert (unicode::icu::is_upper('M'));
234232
assert (!unicode::icu::is_upper('m'));
235233
}
236-
}
234+
}

trunk/src/test/run-pass/issue-2989.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
use std;
2+
3+
trait methods {
4+
fn to_bytes() -> ~[u8];
5+
}
6+
7+
impl (): methods {
8+
fn to_bytes() -> ~[u8] {
9+
vec::from_elem(0, 0)
10+
}
11+
}
12+
13+
// the position of this function is significant! - if it comes before methods
14+
// then it works, if it comes after it then it doesnt!
15+
fn to_bools(bitv: {storage: ~[u64]}) -> ~[bool] {
16+
vec::from_fn(8, |i| {
17+
let w = i / 64;
18+
let b = i % 64;
19+
let x = 1u64 & (bitv.storage[w] >> b);
20+
x == 1u64
21+
})
22+
}
23+
24+
fn main() {
25+
let bools = ~[false, false, true, false, false, true, true, false];
26+
let bools2 = to_bools({storage: ~[0b01100100]});
27+
28+
for uint::range(0, 8) |i| {
29+
io::println(#fmt("%u => %u vs %u", i, bools[i] as uint, bools2[i] as uint));
30+
}
31+
32+
assert bools == bools2;
33+
}

0 commit comments

Comments
 (0)