Skip to content

Commit 2bf2a7f

Browse files
committed
---
yaml --- r: 148391 b: refs/heads/try2 c: c5d05ac h: refs/heads/master i: 148389: 6501778 148387: 4f24141 148383: 5db3984 v: v3
1 parent 1d27acb commit 2bf2a7f

File tree

195 files changed

+7292
-5216
lines changed

Some content is hidden

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

195 files changed

+7292
-5216
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: 4d5da45e7ecae3c71b93fd5a89e2f41d713e529b
8+
refs/heads/try2: c5d05acf392afc9c480ee7b23f2132c1a110de8c
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/doc/complement-cheatsheet.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ let reader : File = File::open(&path).unwrap_or_else(on_error);
6262
Use the [`lines`](http://static.rust-lang.org/doc/master/std/io/trait.Buffer.html#method.lines) method on a [`BufferedReader`](http://static.rust-lang.org/doc/master/std/io/buffered/struct.BufferedReader.html).
6363

6464
~~~
65-
use std::io::buffered::BufferedReader;
66-
# use std::io::mem::MemReader;
65+
use std::io::BufferedReader;
66+
# use std::io::MemReader;
6767
6868
# let reader = MemReader::new(~[]);
6969

branches/try2/doc/guide-conditions.md

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,11 @@ An example program that does this task reads like this:
4646
~~~~
4747
# #[allow(unused_imports)];
4848
# extern mod extra;
49-
use std::io::buffered::BufferedReader;
50-
use std::io::File;
49+
use std::io::{BufferedReader, File};
5150
# mod BufferedReader {
5251
# use std::io::File;
53-
# use std::io::mem::MemReader;
54-
# use std::io::buffered::BufferedReader;
52+
# use std::io::MemReader;
53+
# use std::io::BufferedReader;
5554
# static s : &'static [u8] = bytes!("1 2\n\
5655
# 34 56\n\
5756
# 789 123\n\
@@ -245,13 +244,12 @@ and trapping its exit status using `task::try`:
245244
~~~~
246245
# #[allow(unused_imports)];
247246
# extern mod extra;
248-
use std::io::buffered::BufferedReader;
249-
use std::io::File;
247+
use std::io::{BufferedReader, File};
250248
use std::task;
251249
# mod BufferedReader {
252250
# use std::io::File;
253-
# use std::io::mem::MemReader;
254-
# use std::io::buffered::BufferedReader;
251+
# use std::io::MemReader;
252+
# use std::io::BufferedReader;
255253
# static s : &'static [u8] = bytes!("1 2\n\
256254
# 34 56\n\
257255
# 789 123\n\
@@ -350,12 +348,11 @@ but similarly clear as the version that used `fail!` in the logic where the erro
350348
~~~~
351349
# #[allow(unused_imports)];
352350
# extern mod extra;
353-
use std::io::buffered::BufferedReader;
354-
use std::io::File;
351+
use std::io::{BufferedReader, File};
355352
# mod BufferedReader {
356353
# use std::io::File;
357-
# use std::io::mem::MemReader;
358-
# use std::io::buffered::BufferedReader;
354+
# use std::io::MemReader;
355+
# use std::io::BufferedReader;
359356
# static s : &'static [u8] = bytes!("1 2\n\
360357
# 34 56\n\
361358
# 789 123\n\
@@ -420,12 +417,11 @@ and replaces bad input lines with the pair `(-1,-1)`:
420417
~~~~
421418
# #[allow(unused_imports)];
422419
# extern mod extra;
423-
use std::io::buffered::BufferedReader;
424-
use std::io::File;
420+
use std::io::{BufferedReader, File};
425421
# mod BufferedReader {
426422
# use std::io::File;
427-
# use std::io::mem::MemReader;
428-
# use std::io::buffered::BufferedReader;
423+
# use std::io::MemReader;
424+
# use std::io::BufferedReader;
429425
# static s : &'static [u8] = bytes!("1 2\n\
430426
# 34 56\n\
431427
# 789 123\n\
@@ -496,12 +492,11 @@ Changing the condition's return type from `(int,int)` to `Option<(int,int)>` wil
496492
~~~~
497493
# #[allow(unused_imports)];
498494
# extern mod extra;
499-
use std::io::buffered::BufferedReader;
500-
use std::io::File;
495+
use std::io::{BufferedReader, File};
501496
# mod BufferedReader {
502497
# use std::io::File;
503-
# use std::io::mem::MemReader;
504-
# use std::io::buffered::BufferedReader;
498+
# use std::io::MemReader;
499+
# use std::io::BufferedReader;
505500
# static s : &'static [u8] = bytes!("1 2\n\
506501
# 34 56\n\
507502
# 789 123\n\
@@ -582,12 +577,11 @@ This can be encoded in the handler API by introducing a helper type: `enum Malfo
582577
~~~~
583578
# #[allow(unused_imports)];
584579
# extern mod extra;
585-
use std::io::buffered::BufferedReader;
586580
use std::io::File;
587581
# mod BufferedReader {
588582
# use std::io::File;
589-
# use std::io::mem::MemReader;
590-
# use std::io::buffered::BufferedReader;
583+
# use std::io::MemReader;
584+
# use std::io::BufferedReader;
591585
# static s : &'static [u8] = bytes!("1 2\n\
592586
# 34 56\n\
593587
# 789 123\n\
@@ -707,12 +701,11 @@ a second condition and a helper function will suffice:
707701
~~~~
708702
# #[allow(unused_imports)];
709703
# extern mod extra;
710-
use std::io::buffered::BufferedReader;
711-
use std::io::File;
704+
use std::io::{BufferedReader, File};
712705
# mod BufferedReader {
713706
# use std::io::File;
714-
# use std::io::mem::MemReader;
715-
# use std::io::buffered::BufferedReader;
707+
# use std::io::MemReader;
708+
# use std::io::BufferedReader;
716709
# static s : &'static [u8] = bytes!("1 2\n\
717710
# 34 56\n\
718711
# 789 123\n\

branches/try2/doc/guide-tasks.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ be distributed on the available cores.
290290
fn partial_sum(start: uint) -> f64 {
291291
let mut local_sum = 0f64;
292292
for num in range(start*100000, (start+1)*100000) {
293-
local_sum += (num as f64 + 1.0).pow(&-2.0);
293+
local_sum += (num as f64 + 1.0).powf(&-2.0);
294294
}
295295
local_sum
296296
}
@@ -326,7 +326,7 @@ a single large vector of floats. Each task needs the full vector to perform its
326326
use extra::arc::Arc;
327327
328328
fn pnorm(nums: &~[f64], p: uint) -> f64 {
329-
nums.iter().fold(0.0, |a,b| a+(*b).pow(&(p as f64)) ).pow(&(1.0 / (p as f64)))
329+
nums.iter().fold(0.0, |a,b| a+(*b).powf(&(p as f64)) ).powf(&(1.0 / (p as f64)))
330330
}
331331
332332
fn main() {

branches/try2/doc/guide-testing.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ mod tests {
6363
}
6464
~~~
6565

66-
Additionally #[test] items behave as if they also have the
67-
#[cfg(test)] attribute, and will not be compiled when the --test flag
66+
Additionally `#[test]` items behave as if they also have the
67+
`#[cfg(test)]` attribute, and will not be compiled when the --test flag
6868
is not used.
6969

7070
Tests that should not be run can be annotated with the 'ignore'

branches/try2/doc/rust.md

Lines changed: 67 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -806,7 +806,9 @@ path_glob : ident [ "::" path_glob ] ?
806806

807807
A _use declaration_ creates one or more local name bindings synonymous
808808
with some other [path](#paths).
809-
Usually a `use` declaration is used to shorten the path required to refer to a module item.
809+
Usually a `use` declaration is used to shorten the path required to refer to a
810+
module item. These declarations may appear at the top of [modules](#modules) and
811+
[blocks](#blocks).
810812

811813
*Note*: Unlike in many languages,
812814
`use` declarations in Rust do *not* declare linkage dependency with external crates.
@@ -2209,12 +2211,9 @@ dereferences (`*expr`), [indexing expressions](#index-expressions)
22092211
(`expr[expr]`), and [field references](#field-expressions) (`expr.f`).
22102212
All other expressions are rvalues.
22112213

2212-
The left operand of an [assignment](#assignment-expressions),
2213-
[binary move](#binary-move-expressions) or
2214+
The left operand of an [assignment](#assignment-expressions) or
22142215
[compound-assignment](#compound-assignment-expressions) expression is an lvalue context,
2215-
as is the single operand of a unary [borrow](#unary-operator-expressions),
2216-
or [move](#unary-move-expressions) expression,
2217-
and _both_ operands of a [swap](#swap-expressions) expression.
2216+
as is the single operand of a unary [borrow](#unary-operator-expressions).
22182217
All other expression contexts are rvalue contexts.
22192218

22202219
When an lvalue is evaluated in an _lvalue context_, it denotes a memory location;
@@ -2227,9 +2226,8 @@ A temporary's lifetime equals the largest lifetime of any reference that points
22272226

22282227
When a [local variable](#memory-slots) is used
22292228
as an [rvalue](#lvalues-rvalues-and-temporaries)
2230-
the variable will either be [moved](#move-expressions) or copied,
2231-
depending on its type.
2232-
For types that contain [owning pointers](#owning-pointers)
2229+
the variable will either be moved or copied, depending on its type.
2230+
For types that contain [owning pointers](#pointer-types)
22332231
or values that implement the special trait `Drop`,
22342232
the variable is moved.
22352233
All other types are copied.
@@ -2318,14 +2316,24 @@ let base = Point3d {x: 1, y: 2, z: 3};
23182316
Point3d {y: 0, z: 10, .. base};
23192317
~~~~
23202318

2321-
### Record expressions
2319+
### Block expressions
23222320

23232321
~~~~ {.ebnf .gram}
2324-
rec_expr : '{' ident ':' expr
2325-
[ ',' ident ':' expr ] *
2326-
[ ".." expr ] '}'
2322+
block_expr : '{' [ view_item ] *
2323+
[ stmt ';' | item ] *
2324+
[ expr ] '}'
23272325
~~~~
23282326

2327+
A _block expression_ is similar to a module in terms of the declarations that
2328+
are possible. Each block conceptually introduces a new namespace scope. View
2329+
items can bring new names into scopes and declared items are in scope for only
2330+
the block itself.
2331+
2332+
A block will execute each statement sequentially, and then execute the
2333+
expression (if given). If the final expression is omitted, the type and return
2334+
value of the block are `()`, but if it is provided, the type and return value
2335+
of the block are that of the expression itself.
2336+
23292337
### Method-call expressions
23302338

23312339
~~~~ {.ebnf .gram}
@@ -2878,16 +2886,26 @@ match x {
28782886

28792887
The first pattern matches lists constructed by applying `Cons` to any head value, and a
28802888
tail value of `~Nil`. The second pattern matches _any_ list constructed with `Cons`,
2881-
ignoring the values of its arguments. The difference between `_` and `*` is that the pattern `C(_)` is only type-correct if
2882-
`C` has exactly one argument, while the pattern `C(..)` is type-correct for any enum variant `C`, regardless of how many arguments `C` has.
2883-
2884-
To execute an `match` expression, first the head expression is evaluated, then
2885-
its value is sequentially compared to the patterns in the arms until a match
2889+
ignoring the values of its arguments. The difference between `_` and `*` is that the pattern
2890+
`C(_)` is only type-correct if `C` has exactly one argument, while the pattern `C(..)` is
2891+
type-correct for any enum variant `C`, regardless of how many arguments `C` has.
2892+
2893+
A `match` behaves differently depending on whether or not the head expression
2894+
is an [lvalue or an rvalue](#lvalues-rvalues-and-temporaries).
2895+
If the head expression is an rvalue, it is
2896+
first evaluated into a temporary location, and the resulting value
2897+
is sequentially compared to the patterns in the arms until a match
28862898
is found. The first arm with a matching pattern is chosen as the branch target
28872899
of the `match`, any variables bound by the pattern are assigned to local
28882900
variables in the arm's block, and control enters the block.
28892901

2890-
An example of an `match` expression:
2902+
When the head expression is an lvalue, the match does not allocate a
2903+
temporary location (however, a by-value binding may copy or move from
2904+
the lvalue). When possible, it is preferable to match on lvalues, as the
2905+
lifetime of these matches inherits the lifetime of the lvalue, rather
2906+
than being restricted to the inside of the match.
2907+
2908+
An example of a `match` expression:
28912909

28922910
~~~~
28932911
# fn process_pair(a: int, b: int) { }
@@ -2917,19 +2935,31 @@ Patterns that bind variables
29172935
default to binding to a copy or move of the matched value
29182936
(depending on the matched value's type).
29192937
This can be changed to bind to a reference by
2920-
using the ```ref``` keyword,
2921-
or to a mutable reference using ```ref mut```.
2922-
2923-
A pattern that's just an identifier,
2924-
like `Nil` in the previous answer,
2925-
could either refer to an enum variant that's in scope,
2926-
or bind a new variable.
2927-
The compiler resolves this ambiguity by forbidding variable bindings that occur in ```match``` patterns from shadowing names of variants that are in scope.
2928-
For example, wherever ```List``` is in scope,
2929-
a ```match``` pattern would not be able to bind ```Nil``` as a new name.
2930-
The compiler interprets a variable pattern `x` as a binding _only_ if there is no variant named `x` in scope.
2931-
A convention you can use to avoid conflicts is simply to name variants with upper-case letters,
2932-
and local variables with lower-case letters.
2938+
using the `ref` keyword,
2939+
or to a mutable reference using `ref mut`.
2940+
2941+
Patterns can also dereference pointers by using the `&`,
2942+
`~` or `@` symbols, as appropriate. For example, these two matches
2943+
on `x: &int` are equivalent:
2944+
2945+
~~~~
2946+
# let x = &3;
2947+
let y = match *x { 0 => "zero", _ => "some" };
2948+
let z = match x { &0 => "zero", _ => "some" };
2949+
2950+
assert_eq!(y, z);
2951+
~~~~
2952+
2953+
A pattern that's just an identifier, like `Nil` in the previous answer,
2954+
could either refer to an enum variant that's in scope, or bind a new variable.
2955+
The compiler resolves this ambiguity by forbidding variable bindings that occur
2956+
in `match` patterns from shadowing names of variants that are in scope.
2957+
For example, wherever `List` is in scope,
2958+
a `match` pattern would not be able to bind `Nil` as a new name.
2959+
The compiler interprets a variable pattern `x` as a binding _only_ if there is
2960+
no variant named `x` in scope.
2961+
A convention you can use to avoid conflicts is simply to name variants with
2962+
upper-case letters, and local variables with lower-case letters.
29332963

29342964
Multiple match patterns may be joined with the `|` operator.
29352965
A range of values may be specified with `..`.
@@ -3110,19 +3140,20 @@ A `struct` *type* is a heterogeneous product of other types, called the *fields*
31103140
the *record* types of the ML family,
31113141
or the *structure* types of the Lisp family.]
31123142

3113-
New instances of a `struct` can be constructed with a [struct expression](#struct-expressions).
3143+
New instances of a `struct` can be constructed with a [struct expression](#structure-expressions).
31143144

31153145
The memory order of fields in a `struct` is given by the item defining it.
31163146
Fields may be given in any order in a corresponding struct *expression*;
31173147
the resulting `struct` value will always be laid out in memory in the order specified by the corresponding *item*.
31183148

3119-
The fields of a `struct` may be qualified by [visibility modifiers](#visibility-modifiers),
3149+
The fields of a `struct` may be qualified by [visibility modifiers](#re-exporting-and-visibility),
31203150
to restrict access to implementation-private data in a structure.
31213151

31223152
A _tuple struct_ type is just like a structure type, except that the fields are anonymous.
31233153

31243154
A _unit-like struct_ type is like a structure type, except that it has no fields.
3125-
The one value constructed by the associated [structure expression](#structure-expression) is the only value that inhabits such a type.
3155+
The one value constructed by the associated [structure expression](#structure-expressions)
3156+
is the only value that inhabits such a type.
31263157

31273158
### Enumerated types
31283159

@@ -3793,7 +3824,7 @@ over the output format of a Rust crate.
37933824
### Logging system
37943825

37953826
The runtime contains a system for directing [logging
3796-
expressions](#log-expressions) to a logging console and/or internal logging
3827+
expressions](#logging-expressions) to a logging console and/or internal logging
37973828
buffers. Logging can be enabled per module.
37983829

37993830
Logging output is enabled by setting the `RUST_LOG` environment

branches/try2/mk/docs.mk

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@ CDOCS :=
1717
DOCS_L10N :=
1818
HTML_DEPS :=
1919

20-
BASE_DOC_OPTS := --include-before-body=doc/version_info.html --standalone \
21-
--toc --number-sections
22-
HTML_OPTS = $(BASE_DOC_OPTS) --to=html5 --section-divs --css=rust.css \
23-
--include-in-header=doc/favicon.inc
24-
TEX_OPTS = $(BASE_DOC_OPTS) --to=latex
20+
BASE_DOC_OPTS := --standalone --toc --number-sections
21+
HTML_OPTS = $(BASE_DOC_OPTS) --to=html5 --section-divs --css=rust.css \
22+
--include-before-body=doc/version_info.html --include-in-header=doc/favicon.inc
23+
TEX_OPTS = $(BASE_DOC_OPTS) --include-before-body=doc/version.md --to=latex
2524
EPUB_OPTS = $(BASE_DOC_OPTS) --to=epub
2625

2726
######################################################################
2827
# Rust version
2928
######################################################################
29+
3030
doc/version.md: $(MKFILE_DEPS) $(wildcard $(S)doc/*.*)
3131
@$(call E, version-stamp: $@)
3232
$(Q)echo "$(CFG_VERSION)" >$@
@@ -84,7 +84,7 @@ doc/rust.tex: rust.md doc/version.md
8484
$(CFG_PANDOC) $(TEX_OPTS) --output=$@
8585

8686
DOCS += doc/rust.epub
87-
doc/rust.epub: rust.md doc/version_info.html doc/rust.css
87+
doc/rust.epub: rust.md
8888
@$(call E, pandoc: $@)
8989
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
9090
$(CFG_PANDOC) $(EPUB_OPTS) --output=$@
@@ -114,7 +114,7 @@ doc/tutorial.tex: tutorial.md doc/version.md
114114
$(CFG_PANDOC) $(TEX_OPTS) --output=$@
115115

116116
DOCS += doc/tutorial.epub
117-
doc/tutorial.epub: tutorial.md doc/version_info.html doc/rust.css
117+
doc/tutorial.epub: tutorial.md
118118
@$(call E, pandoc: $@)
119119
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
120120
$(CFG_PANDOC) $(EPUB_OPTS) --output=$@
@@ -265,6 +265,7 @@ endif # No pandoc / node
265265
######################################################################
266266
# LLnextgen (grammar analysis from refman)
267267
######################################################################
268+
268269
ifeq ($(CFG_LLNEXTGEN),)
269270
$(info cfg: no llnextgen found, omitting grammar-verification)
270271
else

branches/try2/mk/tests.mk

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -626,9 +626,10 @@ CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) := \
626626
--aux-base $$(S)src/test/auxiliary/ \
627627
--stage-id stage$(1)-$(2) \
628628
--target $(2) \
629+
--host $(3) \
629630
--adb-path=$(CFG_ADB) \
630631
--adb-test-dir=$(CFG_ADB_TEST_DIR) \
631-
--rustcflags "$(RUSTC_FLAGS_$(2)) $$(CTEST_RUSTC_FLAGS) --target=$(2)" \
632+
--rustcflags "$(RUSTC_FLAGS_$(2)) $$(CTEST_RUSTC_FLAGS)" \
632633
$$(CTEST_TESTARGS)
633634

634635
CTEST_DEPS_rpass_$(1)-T-$(2)-H-$(3) = $$(RPASS_TESTS)

0 commit comments

Comments
 (0)