Skip to content

Commit 28e362a

Browse files
committed
---
yaml --- r: 102038 b: refs/heads/master c: f8893ed h: refs/heads/master v: v3
1 parent a3a4f50 commit 28e362a

File tree

108 files changed

+1904
-1619
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

108 files changed

+1904
-1619
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: e2f99b93cd0f9bdbaf126ce3eb5b9a8f2be354f4
2+
refs/heads/master: f8893ed5d97180dc51d82df1bdbab989c4bde46d
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 6e7f170fedd3c526a643c0b2d13863acd982be02
55
refs/heads/try: a97642026c18a624ff6ea01075dd9550f8ed07ff

trunk/src/compiletest/runtest.rs

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -258,15 +258,12 @@ actual:\n\
258258
}
259259

260260
fn run_debuginfo_test(config: &config, props: &TestProps, testfile: &Path) {
261-
262-
// do not optimize debuginfo tests
263-
let mut config = match config.target_rustcflags {
264-
Some(ref flags) => config {
265-
target_rustcflags: Some(flags.replace("-O", "")),
266-
.. (*config).clone()
267-
},
268-
None => (*config).clone()
261+
let mut config = config {
262+
target_rustcflags: cleanup_debug_info_options(&config.target_rustcflags),
263+
host_rustcflags: cleanup_debug_info_options(&config.host_rustcflags),
264+
.. config.clone()
269265
};
266+
270267
let config = &mut config;
271268
let check_lines = &props.check_lines;
272269
let mut cmds = props.debugger_cmds.connect("\n");
@@ -436,6 +433,20 @@ fn run_debuginfo_test(config: &config, props: &TestProps, testfile: &Path) {
436433
check_lines[i]), &ProcRes);
437434
}
438435
}
436+
437+
fn cleanup_debug_info_options(options: &Option<~str>) -> Option<~str> {
438+
if options.is_none() {
439+
return None;
440+
}
441+
442+
// Remove options that are either unwanted (-O) or may lead to duplicates due to RUSTFLAGS.
443+
let options_to_remove = [~"-O", ~"-g", ~"--debuginfo"];
444+
let new_options = split_maybe_args(options).move_iter()
445+
.filter(|x| !options_to_remove.contains(x))
446+
.to_owned_vec()
447+
.connect(" ");
448+
Some(new_options)
449+
}
439450
}
440451

441452
fn check_error_patterns(props: &TestProps,

trunk/src/doc/guide-macros.md

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ which both pattern-match on their input and both return early in one case,
1111
doing nothing otherwise:
1212

1313
~~~~
14-
# enum t { special_a(uint), special_b(uint) };
14+
# enum T { SpecialA(uint), SpecialB(uint) };
1515
# fn f() -> uint {
16-
# let input_1 = special_a(0);
17-
# let input_2 = special_a(0);
16+
# let input_1 = SpecialA(0);
17+
# let input_2 = SpecialA(0);
1818
match input_1 {
19-
special_a(x) => { return x; }
19+
SpecialA(x) => { return x; }
2020
_ => {}
2121
}
2222
// ...
2323
match input_2 {
24-
special_b(x) => { return x; }
24+
SpecialB(x) => { return x; }
2525
_ => {}
2626
}
2727
# return 0u;
@@ -37,22 +37,22 @@ lightweight custom syntax extensions, themselves defined using the
3737
the pattern in the above code:
3838

3939
~~~~
40-
# enum t { special_a(uint), special_b(uint) };
40+
# enum T { SpecialA(uint), SpecialB(uint) };
4141
# fn f() -> uint {
42-
# let input_1 = special_a(0);
43-
# let input_2 = special_a(0);
42+
# let input_1 = SpecialA(0);
43+
# let input_2 = SpecialA(0);
4444
macro_rules! early_return(
45-
($inp:expr $sp:ident) => ( // invoke it like `(input_5 special_e)`
45+
($inp:expr $sp:ident) => ( // invoke it like `(input_5 SpecialE)`
4646
match $inp {
4747
$sp(x) => { return x; }
4848
_ => {}
4949
}
5050
);
5151
)
5252
// ...
53-
early_return!(input_1 special_a);
53+
early_return!(input_1 SpecialA);
5454
// ...
55-
early_return!(input_2 special_b);
55+
early_return!(input_2 SpecialB);
5656
# return 0;
5757
# }
5858
~~~~
@@ -155,10 +155,10 @@ separator token (a comma-separated list could be written `$(...),*`), and `+`
155155
instead of `*` to mean "at least one".
156156

157157
~~~~
158-
# enum t { special_a(uint),special_b(uint),special_c(uint),special_d(uint)};
158+
# enum T { SpecialA(uint),SpecialB(uint),SpecialC(uint),SpecialD(uint)};
159159
# fn f() -> uint {
160-
# let input_1 = special_a(0);
161-
# let input_2 = special_a(0);
160+
# let input_1 = SpecialA(0);
161+
# let input_2 = SpecialA(0);
162162
macro_rules! early_return(
163163
($inp:expr, [ $($sp:ident)|+ ]) => (
164164
match $inp {
@@ -170,9 +170,9 @@ macro_rules! early_return(
170170
);
171171
)
172172
// ...
173-
early_return!(input_1, [special_a|special_c|special_d]);
173+
early_return!(input_1, [SpecialA|SpecialC|SpecialD]);
174174
// ...
175-
early_return!(input_2, [special_b]);
175+
early_return!(input_2, [SpecialB]);
176176
# return 0;
177177
# }
178178
~~~~
@@ -215,14 +215,14 @@ solves the problem.
215215
Now consider code like the following:
216216

217217
~~~~
218-
# enum t1 { good_1(t2, uint), bad_1 };
219-
# struct t2 { body: t3 }
220-
# enum t3 { good_2(uint), bad_2};
221-
# fn f(x: t1) -> uint {
218+
# enum T1 { Good1(T2, uint), Bad1};
219+
# struct T2 { body: T3 }
220+
# enum T3 { Good2(uint), Bad2};
221+
# fn f(x: T1) -> uint {
222222
match x {
223-
good_1(g1, val) => {
223+
Good1(g1, val) => {
224224
match g1.body {
225-
good_2(result) => {
225+
Good2(result) => {
226226
// complicated stuff goes here
227227
return result + val;
228228
},
@@ -261,13 +261,13 @@ macro_rules! biased_match (
261261
)
262262
)
263263
264-
# enum t1 { good_1(t2, uint), bad_1 };
265-
# struct t2 { body: t3 }
266-
# enum t3 { good_2(uint), bad_2};
267-
# fn f(x: t1) -> uint {
268-
biased_match!((x) ~ (good_1(g1, val)) else { return 0 };
264+
# enum T1 { Good1(T2, uint), Bad1};
265+
# struct T2 { body: T3 }
266+
# enum T3 { Good2(uint), Bad2};
267+
# fn f(x: T1) -> uint {
268+
biased_match!((x) ~ (Good1(g1, val)) else { return 0 };
269269
binds g1, val )
270-
biased_match!((g1.body) ~ (good_2(result) )
270+
biased_match!((g1.body) ~ (Good2(result) )
271271
else { fail!("Didn't get good_2") };
272272
binds result )
273273
// complicated stuff goes here
@@ -365,13 +365,13 @@ macro_rules! biased_match (
365365
)
366366
367367
368-
# enum t1 { good_1(t2, uint), bad_1 };
369-
# struct t2 { body: t3 }
370-
# enum t3 { good_2(uint), bad_2};
371-
# fn f(x: t1) -> uint {
368+
# enum T1 { Good1(T2, uint), Bad1};
369+
# struct T2 { body: T3 }
370+
# enum T3 { Good2(uint), Bad2};
371+
# fn f(x: T1) -> uint {
372372
biased_match!(
373-
(x) ~ (good_1(g1, val)) else { return 0 };
374-
(g1.body) ~ (good_2(result) ) else { fail!("Didn't get good_2") };
373+
(x) ~ (Good1(g1, val)) else { return 0 };
374+
(g1.body) ~ (Good2(result) ) else { fail!("Didn't get Good2") };
375375
binds val, result )
376376
// complicated stuff goes here
377377
return result + val;

trunk/src/doc/rust.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ Two examples of paths with type arguments:
470470
# use std::hashmap::HashMap;
471471
# fn f() {
472472
# fn id<T>(t: T) -> T { t }
473-
type t = HashMap<int,~str>; // Type arguments used in a type expression
473+
type T = HashMap<int,~str>; // Type arguments used in a type expression
474474
let x = id::<int>(10); // Type arguments used in a call expression
475475
# }
476476
~~~~
@@ -701,7 +701,7 @@ An example of a module:
701701

702702
~~~~
703703
mod math {
704-
type complex = (f64, f64);
704+
type Complex = (f64, f64);
705705
fn sin(f: f64) -> f64 {
706706
...
707707
# fail!();
@@ -2824,13 +2824,13 @@ provided by an implementation of `std::iter::Iterator`.
28242824
An example of a for loop over the contents of a vector:
28252825

28262826
~~~~
2827-
# type foo = int;
2828-
# fn bar(f: foo) { }
2827+
# type Foo = int;
2828+
# fn bar(f: Foo) { }
28292829
# let a = 0;
28302830
# let b = 0;
28312831
# let c = 0;
28322832
2833-
let v: &[foo] = &[a, b, c];
2833+
let v: &[Foo] = &[a, b, c];
28342834
28352835
for e in v.iter() {
28362836
bar(*e);

trunk/src/doc/tutorial.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,32 @@ loop {
582582
This code prints out a weird sequence of numbers and stops as soon as
583583
it finds one that can be divided by five.
584584

585+
There is also a for-loop that can be used to iterate over a range of numbers:
586+
587+
~~~~
588+
for n in range(0, 5) {
589+
println!("{}", n);
590+
}
591+
~~~~
592+
593+
The snippet above prints integer numbers under 5 starting at 0.
594+
595+
More generally, a for loop works with anything implementing the `Iterator` trait.
596+
Data structures can provide one or more methods that return iterators over
597+
their contents. For example, strings support iteration over their contents in
598+
various ways:
599+
600+
~~~~
601+
let s = "Hello";
602+
for c in s.chars() {
603+
println!("{}", c);
604+
}
605+
~~~~
606+
607+
The snippet above prints the characters in "Hello" vertically, adding a new
608+
line after each character.
609+
610+
585611
# Data structures
586612

587613
## Structs

trunk/src/libextra/enum_set.rs renamed to trunk/src/libcollections/enum_set.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ mod test {
139139

140140
use std::cast;
141141

142-
use enum_set::*;
142+
use enum_set::{EnumSet, CLike};
143143

144144
#[deriving(Eq)]
145145
#[repr(uint)]

trunk/src/libcollections/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ pub use bitv::Bitv;
2626
pub use btree::BTree;
2727
pub use deque::Deque;
2828
pub use dlist::DList;
29+
pub use enum_set::EnumSet;
2930
pub use list::List;
3031
pub use lru_cache::LruCache;
3132
pub use priority_queue::PriorityQueue;
@@ -37,6 +38,7 @@ pub mod bitv;
3738
pub mod btree;
3839
pub mod deque;
3940
pub mod dlist;
41+
pub mod enum_set;
4042
pub mod list;
4143
pub mod lru_cache;
4244
pub mod priority_queue;

0 commit comments

Comments
 (0)