Skip to content

Commit 45750d9

Browse files
committed
---
yaml --- r: 194279 b: refs/heads/tmp c: 2750e3c h: refs/heads/master i: 194277: 3b19945 194275: 40a2dce 194271: 4e0da72 v: v3
1 parent 36d09b9 commit 45750d9

File tree

229 files changed

+2147
-2933
lines changed

Some content is hidden

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

229 files changed

+2147
-2933
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ refs/heads/building: 126db549b038c84269a1e4fe46f051b2c15d6970
3434
refs/heads/beta: a3b13610c5b93d9ada072471a001a5613df6a960
3535
refs/heads/windistfix: 7608dbad651f02e837ed05eef3d74a6662a6e928
3636
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
37-
refs/heads/tmp: 2153c581ef66de1537286b58b1b323d24c25d07f
37+
refs/heads/tmp: 2750e3c83e7cfbad779877ac213bd815c6aa65bb
3838
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f
3939
refs/tags/homu-tmp: 28a0b25f424090255966273994748a9f9901059f
4040
refs/heads/gate: 97c84447b65164731087ea82685580cc81424412

branches/tmp/man/rustc.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ full debug info with variable and type information.
242242
\fBopt\-level\fR=\fIVAL\fR
243243
Optimize with possible levels 0\[en]3
244244

245-
.SH ENVIRONMENT
245+
.SH ENVIRONMENT VARIABLES
246246

247247
Some of these affect the output of the compiler, while others affect programs
248248
which link to the standard library.

branches/tmp/src/compiletest/compiletest.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
#![feature(std_misc)]
2121
#![feature(test)]
2222
#![feature(path_ext)]
23-
#![feature(convert)]
24-
#![feature(str_char)]
2523

2624
#![deny(warnings)]
2725

@@ -117,7 +115,7 @@ pub fn parse_config(args: Vec<String> ) -> Config {
117115

118116
fn opt_path(m: &getopts::Matches, nm: &str) -> PathBuf {
119117
match m.opt_str(nm) {
120-
Some(s) => PathBuf::from(&s),
118+
Some(s) => PathBuf::new(&s),
121119
None => panic!("no option (=path) found for {}", nm),
122120
}
123121
}
@@ -132,18 +130,18 @@ pub fn parse_config(args: Vec<String> ) -> Config {
132130
compile_lib_path: matches.opt_str("compile-lib-path").unwrap(),
133131
run_lib_path: matches.opt_str("run-lib-path").unwrap(),
134132
rustc_path: opt_path(matches, "rustc-path"),
135-
clang_path: matches.opt_str("clang-path").map(|s| PathBuf::from(&s)),
133+
clang_path: matches.opt_str("clang-path").map(|s| PathBuf::new(&s)),
136134
valgrind_path: matches.opt_str("valgrind-path"),
137135
force_valgrind: matches.opt_present("force-valgrind"),
138-
llvm_bin_path: matches.opt_str("llvm-bin-path").map(|s| PathBuf::from(&s)),
136+
llvm_bin_path: matches.opt_str("llvm-bin-path").map(|s| PathBuf::new(&s)),
139137
src_base: opt_path(matches, "src-base"),
140138
build_base: opt_path(matches, "build-base"),
141139
aux_base: opt_path(matches, "aux-base"),
142140
stage_id: matches.opt_str("stage-id").unwrap(),
143141
mode: matches.opt_str("mode").unwrap().parse().ok().expect("invalid mode"),
144142
run_ignored: matches.opt_present("ignored"),
145143
filter: filter,
146-
logfile: matches.opt_str("logfile").map(|s| PathBuf::from(&s)),
144+
logfile: matches.opt_str("logfile").map(|s| PathBuf::new(&s)),
147145
runtool: matches.opt_str("runtool"),
148146
host_rustcflags: matches.opt_str("host-rustcflags"),
149147
target_rustcflags: matches.opt_str("target-rustcflags"),

branches/tmp/src/compiletest/header.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,6 @@ pub fn is_test_ignored(config: &Config, testfile: &Path) -> bool {
163163
fn ignore_target(config: &Config) -> String {
164164
format!("ignore-{}", util::get_os(&config.target))
165165
}
166-
fn ignore_architecture(config: &Config) -> String {
167-
format!("ignore-{}", util::get_arch(&config.target))
168-
}
169166
fn ignore_stage(config: &Config) -> String {
170167
format!("ignore-{}",
171168
config.stage_id.split('-').next().unwrap())
@@ -229,7 +226,6 @@ pub fn is_test_ignored(config: &Config, testfile: &Path) -> bool {
229226
let val = iter_header(testfile, &mut |ln| {
230227
!parse_name_directive(ln, "ignore-test") &&
231228
!parse_name_directive(ln, &ignore_target(config)) &&
232-
!parse_name_directive(ln, &ignore_architecture(config)) &&
233229
!parse_name_directive(ln, &ignore_stage(config)) &&
234230
!(config.mode == common::Pretty && parse_name_directive(ln, "ignore-pretty")) &&
235231
!(config.target != config.host && parse_name_directive(ln, "ignore-cross-compile")) &&
@@ -328,10 +324,10 @@ fn parse_exec_env(line: &str) -> Option<(String, String)> {
328324

329325
fn parse_pp_exact(line: &str, testfile: &Path) -> Option<PathBuf> {
330326
match parse_name_value_directive(line, "pp-exact") {
331-
Some(s) => Some(PathBuf::from(&s)),
327+
Some(s) => Some(PathBuf::new(&s)),
332328
None => {
333329
if parse_name_directive(line, "pp-exact") {
334-
testfile.file_name().map(|s| PathBuf::from(s))
330+
testfile.file_name().map(|s| PathBuf::new(s))
335331
} else {
336332
None
337333
}

branches/tmp/src/compiletest/procsrv.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@
1010

1111
#![allow(deprecated)] // for old path, for dynamic_lib
1212

13-
use std::dynamic_lib::DynamicLibrary;
14-
use std::io::prelude::*;
15-
use std::old_path::Path;
1613
use std::process::{ExitStatus, Command, Child, Output, Stdio};
14+
use std::io::prelude::*;
15+
use std::dynamic_lib::DynamicLibrary;
1716

1817
fn add_target_env(cmd: &mut Command, lib_path: &str, aux_path: Option<&str>) {
1918
// Need to be sure to put both the lib_path and the aux path in the dylib

branches/tmp/src/compiletest/runtest.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1440,7 +1440,7 @@ fn aux_output_dir_name(config: &Config, testfile: &Path) -> PathBuf {
14401440
}
14411441

14421442
fn output_testname(testfile: &Path) -> PathBuf {
1443-
PathBuf::from(testfile.file_stem().unwrap())
1443+
PathBuf::new(testfile.file_stem().unwrap())
14441444
}
14451445

14461446
fn output_base_name(config: &Config, testfile: &Path) -> PathBuf {

branches/tmp/src/compiletest/util.rs

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,6 @@ const OS_TABLE: &'static [(&'static str, &'static str)] = &[
2525
("openbsd", "openbsd"),
2626
];
2727

28-
const ARCH_TABLE: &'static [(&'static str, &'static str)] = &[
29-
("i386", "x86"),
30-
("i686", "x86"),
31-
("amd64", "x86_64"),
32-
("x86_64", "x86_64"),
33-
("sparc", "sparc"),
34-
("powerpc", "powerpc"),
35-
("arm64", "aarch64"),
36-
("arm", "arm"),
37-
("aarch64", "aarch64"),
38-
("mips", "mips"),
39-
("xcore", "xcore"),
40-
("msp430", "msp430"),
41-
("hexagon", "hexagon"),
42-
("s390x", "systemz"),
43-
];
44-
4528
pub fn get_os(triple: &str) -> &'static str {
4629
for &(triple_os, os) in OS_TABLE {
4730
if triple.contains(triple_os) {
@@ -50,14 +33,6 @@ pub fn get_os(triple: &str) -> &'static str {
5033
}
5134
panic!("Cannot determine OS from triple");
5235
}
53-
pub fn get_arch(triple: &str) -> &'static str {
54-
for &(triple_arch, arch) in ARCH_TABLE {
55-
if triple.contains(triple_arch) {
56-
return arch
57-
}
58-
}
59-
panic!("Cannot determine Architecture from triple");
60-
}
6136

6237
pub fn make_new_path(path: &str) -> String {
6338
assert!(cfg!(windows));

branches/tmp/src/doc/reference.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1982,7 +1982,7 @@ the namespace hierarchy as it normally would.
19821982
## Attributes
19831983

19841984
```{.ebnf .gram}
1985-
attribute : '#' '!' ? '[' meta_item ']' ;
1985+
attribute : "#!" ? '[' meta_item ']' ;
19861986
meta_item : ident [ '=' literal
19871987
| '(' meta_seq ')' ] ? ;
19881988
meta_seq : meta_item [ ',' meta_seq ] ? ;
@@ -3158,7 +3158,7 @@ ten_times(|j| println!("hello, {}", j));
31583158
### While loops
31593159

31603160
```{.ebnf .gram}
3161-
while_expr : [ lifetime ':' ] "while" no_struct_literal_expr '{' block '}' ;
3161+
while_expr : "while" no_struct_literal_expr '{' block '}' ;
31623162
```
31633163

31643164
A `while` loop begins by evaluating the boolean loop conditional expression.
@@ -3223,7 +3223,7 @@ A `continue` expression is only permitted in the body of a loop.
32233223
### For expressions
32243224

32253225
```{.ebnf .gram}
3226-
for_expr : [ lifetime ':' ] "for" pat "in" no_struct_literal_expr '{' block '}' ;
3226+
for_expr : "for" pat "in" no_struct_literal_expr '{' block '}' ;
32273227
```
32283228

32293229
A `for` expression is a syntactic construct for looping over elements provided

branches/tmp/src/doc/trpl/SUMMARY.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Summary
22

3-
* [The Basics](basic.md)
3+
* [I: The Basics](basic.md)
44
* [Installing Rust](installing-rust.md)
55
* [Hello, world!](hello-world.md)
66
* [Hello, Cargo!](hello-cargo.md)
@@ -14,7 +14,8 @@
1414
* [Strings](strings.md)
1515
* [Arrays, Vectors, and Slices](arrays-vectors-and-slices.md)
1616
* [Standard Input](standard-input.md)
17-
* [Intermediate Rust](intermediate.md)
17+
* [Guessing Game](guessing-game.md)
18+
* [II: Intermediate Rust](intermediate.md)
1819
* [Crates and Modules](crates-and-modules.md)
1920
* [Testing](testing.md)
2021
* [Pointers](pointers.md)
@@ -31,7 +32,7 @@
3132
* [Concurrency](concurrency.md)
3233
* [Error Handling](error-handling.md)
3334
* [Documentation](documentation.md)
34-
* [Advanced Topics](advanced.md)
35+
* [III: Advanced Topics](advanced.md)
3536
* [FFI](ffi.md)
3637
* [Unsafe Code](unsafe.md)
3738
* [Advanced Macros](advanced-macros.md)

branches/tmp/src/doc/trpl/advanced-macros.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ off.
66
# Syntactic requirements
77

88
Even when Rust code contains un-expanded macros, it can be parsed as a full
9-
[syntax tree][ast]. This property can be very useful for editors and other
10-
tools that process code. It also has a few consequences for the design of
11-
Rust's macro system.
12-
13-
[ast]: glossary.html#abstract-syntax-tree
9+
syntax tree. This property can be very useful for editors and other tools that
10+
process code. It also has a few consequences for the design of Rust's macro
11+
system.
1412

1513
One consequence is that Rust must determine, when it parses a macro invocation,
1614
whether the macro stands in for

branches/tmp/src/doc/trpl/compound-data-types.md

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ This pattern is very powerful, and we'll see it repeated more later.
4747

4848
There are also a few things you can do with a tuple as a whole, without
4949
destructuring. You can assign one tuple into another, if they have the same
50-
contained types and [arity]. Tuples have the same arity when they have the same
50+
contained types and arity. Tuples have the same arity when they have the same
5151
length.
5252

5353
```rust
@@ -196,9 +196,8 @@ Now, we have actual names, rather than positions. Good names are important,
196196
and with a struct, we have actual names.
197197

198198
There _is_ one case when a tuple struct is very useful, though, and that's a
199-
tuple struct with only one element. We call this the *newtype* pattern, because
200-
it allows you to create a new type, distinct from that of its contained value
201-
and expressing its own semantic meaning:
199+
tuple struct with only one element. We call this a *newtype*, because it lets
200+
you create a new type that's similar to another one:
202201

203202
```{rust}
204203
struct Inches(i32);
@@ -217,7 +216,7 @@ destructuring `let`, as we discussed previously in 'tuples.' In this case, the
217216

218217
Finally, Rust has a "sum type", an *enum*. Enums are an incredibly useful
219218
feature of Rust, and are used throughout the standard library. An `enum` is
220-
a type which relates a set of alternates to a specific name. For example, below
219+
a type which ties a set of alternates to a specific name. For example, below
221220
we define `Character` to be either a `Digit` or something else. These
222221
can be used via their fully scoped names: `Character::Other` (more about `::`
223222
below).
@@ -229,8 +228,8 @@ enum Character {
229228
}
230229
```
231230

232-
Most normal types are allowed as the variant components of an `enum`. Here are
233-
some examples:
231+
An `enum` variant can be defined as most normal types. Below are some example
232+
types which also would be allowed in an `enum`.
234233

235234
```rust
236235
struct Empty;
@@ -240,15 +239,15 @@ struct Status { Health: i32, Mana: i32, Attack: i32, Defense: i32 }
240239
struct HeightDatabase(Vec<i32>);
241240
```
242241

243-
You see that, depending on its type, an `enum` variant may or may not hold data.
244-
In `Character`, for instance, `Digit` gives a meaningful name for an `i32`
245-
value, where `Other` is only a name. However, the fact that they represent
246-
distinct categories of `Character` is a very useful property.
242+
So you see that depending on the sub-datastructure, the `enum` variant, same as
243+
a struct, may or may not hold data. That is, in `Character`, `Digit` is a name
244+
tied to an `i32` where `Other` is just a name. However, the fact that they are
245+
distinct makes this very useful.
247246

248-
As with structures, the variants of an enum by default are not comparable with
249-
equality operators (`==`, `!=`), have no ordering (`<`, `>=`, etc.), and do not
250-
support other binary operations such as `*` and `+`. As such, the following code
251-
is invalid for the example `Character` type:
247+
As with structures, enums don't by default have access to operators such as
248+
compare ( `==` and `!=`), binary operations (`*` and `+`), and order
249+
(`<` and `>=`). As such, using the previous `Character` type, the
250+
following code is invalid:
252251

253252
```{rust,ignore}
254253
// These assignments both succeed
@@ -266,10 +265,9 @@ let four_equals_ten = four == ten;
266265
```
267266

268267
This may seem rather limiting, but it's a limitation which we can overcome.
269-
There are two ways: by implementing equality ourselves, or by pattern matching
270-
variants with [`match`][match] expressions, which you'll learn in the next
271-
chapter. We don't know enough about Rust to implement equality yet, but we can
272-
use the `Ordering` enum from the standard library, which does:
268+
There are two ways: by implementing equality ourselves, or by using the
269+
[`match`][match] keyword. We don't know enough about Rust to implement equality
270+
yet, but we can use the `Ordering` enum from the standard library, which does:
273271

274272
```
275273
enum Ordering {
@@ -279,8 +277,9 @@ enum Ordering {
279277
}
280278
```
281279

282-
Because `Ordering` has already been defined for us, we will import it with the
283-
`use` keyword. Here's an example of how it is used:
280+
Because we did not define `Ordering`, we must import it (from the std
281+
library) with the `use` keyword. Here's an example of how `Ordering` is
282+
used:
284283

285284
```{rust}
286285
use std::cmp::Ordering;
@@ -314,17 +313,17 @@ the standard library if you need them.
314313

315314
Okay, let's talk about the actual code in the example. `cmp` is a function that
316315
compares two things, and returns an `Ordering`. We return either
317-
`Ordering::Less`, `Ordering::Greater`, or `Ordering::Equal`, depending on
318-
whether the first value is less than, greater than, or equal to the second. Note
319-
that each variant of the `enum` is namespaced under the `enum` itself: it's
320-
`Ordering::Greater`, not `Greater`.
316+
`Ordering::Less`, `Ordering::Greater`, or `Ordering::Equal`, depending on if
317+
the two values are less, greater, or equal. Note that each variant of the
318+
`enum` is namespaced under the `enum` itself: it's `Ordering::Greater` not
319+
`Greater`.
321320

322321
The `ordering` variable has the type `Ordering`, and so contains one of the
323322
three values. We then do a bunch of `if`/`else` comparisons to check which
324323
one it is.
325324

326-
This `Ordering::Greater` notation is too long. Let's use another form of `use`
327-
to import the `enum` variants instead. This will avoid full scoping:
325+
This `Ordering::Greater` notation is too long. Let's use `use` to import the
326+
`enum` variants instead. This will avoid full scoping:
328327

329328
```{rust}
330329
use std::cmp::Ordering::{self, Equal, Less, Greater};
@@ -348,18 +347,16 @@ fn main() {
348347
```
349348

350349
Importing variants is convenient and compact, but can also cause name conflicts,
351-
so do this with caution. For this reason, it's normally considered better style
352-
to `use` an enum rather than its variants directly.
350+
so do this with caution. It's considered good style to rarely import variants
351+
for this reason.
353352

354-
As you can see, `enum`s are quite a powerful tool for data representation, and
355-
are even more useful when they're [generic][generics] across types. Before we
356-
get to generics, though, let's talk about how to use enums with pattern
357-
matching, a tool that will let us deconstruct sum types (the type theory term
358-
for enums) like `Ordering` in a very elegant way that avoids all these messy
359-
and brittle `if`/`else`s.
353+
As you can see, `enum`s are quite a powerful tool for data representation, and are
354+
even more useful when they're [generic][generics] across types. Before we
355+
get to generics, though, let's talk about how to use them with pattern matching, a
356+
tool that will let us deconstruct this sum type (the type theory term for enums)
357+
in a very elegant way and avoid all these messy `if`/`else`s.
360358

361359

362-
[arity]: ./glossary.html#arity
363360
[match]: ./match.html
364361
[game]: ./guessing-game.html#comparing-guesses
365362
[generics]: ./generics.html

0 commit comments

Comments
 (0)