Skip to content

Commit 522d09d

Browse files
committed
Auto merge of #22541 - Manishearth:rollup, r=Gankro
Continued from #22520
2 parents 0b664bb + 49771ba commit 522d09d

File tree

735 files changed

+12327
-4596
lines changed

Some content is hidden

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

735 files changed

+12327
-4596
lines changed

Diff for: README.md

+24-22
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
# The Rust Programming Language
22

33
This is a compiler for Rust, including standard libraries, tools and
4-
documentation.
4+
documentation. Rust is a systems programming language that is fast,
5+
memory safe and multithreaded, but does not employ a garbage collector
6+
or otherwise impose significant runtime overhead.
57

68
## Quick Start
79

8-
Read ["Installing Rust"][install] from [The Book][trpl].
10+
Read ["Installing Rust"] from [The Book].
911

10-
[install]: http://doc.rust-lang.org/book/installing-rust.html
11-
[trpl]: http://doc.rust-lang.org/book/index.html
12+
["Installing Rust"]: http://doc.rust-lang.org/book/installing-rust.html
13+
[The Book]: http://doc.rust-lang.org/book/index.html
1214

1315
## Building from Source
1416

@@ -19,22 +21,14 @@ Read ["Installing Rust"][install] from [The Book][trpl].
1921
* `curl`
2022
* `git`
2123

22-
2. Download and build Rust:
23-
24-
You can either download a [tarball] or build directly from the [repo].
25-
26-
To build from the [tarball] do:
27-
28-
$ curl -O https://static.rust-lang.org/dist/rustc-nightly-src.tar.gz
29-
$ tar -xzf rustc-nightly-src.tar.gz
30-
$ cd rustc-nightly
31-
32-
Or to build from the [repo] do:
24+
2. Clone the [source] with `git`:
3325

3426
$ git clone https://github.com/rust-lang/rust.git
3527
$ cd rust
3628

37-
Now that you have Rust's source code, you can configure and build it:
29+
[source]: https://github.com/rust-lang/rust
30+
31+
3. Build and install:
3832

3933
$ ./configure
4034
$ make && make install
@@ -46,7 +40,10 @@ Read ["Installing Rust"][install] from [The Book][trpl].
4640
4741
When complete, `make install` will place several programs into
4842
`/usr/local/bin`: `rustc`, the Rust compiler, and `rustdoc`, the
49-
API-documentation tool.
43+
API-documentation tool. This install does not include [Cargo],
44+
Rust's package manager, which you may also want to build.
45+
46+
[Cargo]: https://github.com/rust-lang/cargo
5047

5148
### Building on Windows
5249

@@ -72,9 +69,6 @@ $ pacman -S base-devel
7269
$ ./configure
7370
$ make && make install
7471

75-
[repo]: https://github.com/rust-lang/rust
76-
[tarball]: https://static.rust-lang.org/dist/rustc-nightly-src.tar.gz
77-
7872
## Notes
7973

8074
Since the Rust compiler is written in Rust, it must be built by a
@@ -94,9 +88,9 @@ supported build environments that are most likely to work.
9488
Rust currently needs about 1.5 GiB of RAM to build without swapping; if it hits
9589
swap, it will take a very long time to build.
9690

97-
There is a lot more documentation in the [wiki].
91+
There is more advice about hacking on Rust in [CONTRIBUTING.md].
9892

99-
[wiki]: https://github.com/rust-lang/rust/wiki
93+
[CONTRIBUTING.md]: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md
10094

10195
## Getting help
10296

@@ -114,6 +108,14 @@ The Rust community congregates in a few places:
114108

115109
To contribute to Rust, please see [CONTRIBUTING.md](CONTRIBUTING.md).
116110

111+
Rust has an [IRC] culture and most real-time collaboration happens in a
112+
variety of channels on Mozilla's IRC network, irc.mozilla.org. The
113+
most popular channel is [#rust], a venue for general discussion about
114+
Rust, and a good place to ask for help,
115+
116+
[IRC]: https://en.wikipedia.org/wiki/Internet_Relay_Chat
117+
[#rust]: irc://irc.mozilla.org/rust
118+
117119
## License
118120

119121
Rust is primarily distributed under the terms of both the MIT license

Diff for: configure

+1
Original file line numberDiff line numberDiff line change
@@ -1056,6 +1056,7 @@ do
10561056
make_dir $h/test/run-pass-fulldeps
10571057
make_dir $h/test/run-fail
10581058
make_dir $h/test/compile-fail
1059+
make_dir $h/test/parse-fail
10591060
make_dir $h/test/compile-fail-fulldeps
10601061
make_dir $h/test/bench
10611062
make_dir $h/test/perf

Diff for: mk/tests.mk

+13-4
Original file line numberDiff line numberDiff line change
@@ -174,12 +174,12 @@ check-notidy: cleantmptestlogs cleantestlibs all check-stage2
174174
check-lite: cleantestlibs cleantmptestlogs \
175175
$(foreach crate,$(TEST_TARGET_CRATES),check-stage2-$(crate)) \
176176
check-stage2-rpass check-stage2-rpass-valgrind \
177-
check-stage2-rfail check-stage2-cfail check-stage2-rmake
177+
check-stage2-rfail check-stage2-cfail check-stage2-pfail check-stage2-rmake
178178
$(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log
179179

180180
# Only check the 'reference' tests: rpass/cfail/rfail/rmake.
181181
check-ref: cleantestlibs cleantmptestlogs check-stage2-rpass check-stage2-rpass-valgrind \
182-
check-stage2-rfail check-stage2-cfail check-stage2-rmake
182+
check-stage2-rfail check-stage2-cfail check-stage2-pfail check-stage2-rmake
183183
$(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log
184184

185185
# Only check the docs.
@@ -291,6 +291,7 @@ check-stage$(1)-T-$(2)-H-$(3)-exec: \
291291
check-stage$(1)-T-$(2)-H-$(3)-rpass-exec \
292292
check-stage$(1)-T-$(2)-H-$(3)-rfail-exec \
293293
check-stage$(1)-T-$(2)-H-$(3)-cfail-exec \
294+
check-stage$(1)-T-$(2)-H-$(3)-pfail-exec \
294295
check-stage$(1)-T-$(2)-H-$(3)-rpass-valgrind-exec \
295296
check-stage$(1)-T-$(2)-H-$(3)-rpass-full-exec \
296297
check-stage$(1)-T-$(2)-H-$(3)-cfail-full-exec \
@@ -470,7 +471,8 @@ RPASS_VALGRIND_TESTS := $(RPASS_VALGRIND_RS)
470471
RPASS_FULL_TESTS := $(RPASS_FULL_RS)
471472
CFAIL_FULL_TESTS := $(CFAIL_FULL_RS)
472473
RFAIL_TESTS := $(RFAIL_RS)
473-
CFAIL_TESTS := $(CFAIL_RS) $(PFAIL_RS)
474+
CFAIL_TESTS := $(CFAIL_RS)
475+
PFAIL_TESTS := $(PFAIL_RS)
474476
BENCH_TESTS := $(BENCH_RS)
475477
PERF_TESTS := $(PERF_RS)
476478
PRETTY_TESTS := $(PRETTY_RS)
@@ -508,6 +510,11 @@ CTEST_BUILD_BASE_cfail = compile-fail
508510
CTEST_MODE_cfail = compile-fail
509511
CTEST_RUNTOOL_cfail = $(CTEST_RUNTOOL)
510512

513+
CTEST_SRC_BASE_pfail = parse-fail
514+
CTEST_BUILD_BASE_pfail = parse-fail
515+
CTEST_MODE_pfail = parse-fail
516+
CTEST_RUNTOOL_pfail = $(CTEST_RUNTOOL)
517+
511518
CTEST_SRC_BASE_bench = bench
512519
CTEST_BUILD_BASE_bench = bench
513520
CTEST_MODE_bench = run-pass
@@ -630,6 +637,7 @@ CTEST_DEPS_rpass-full_$(1)-T-$(2)-H-$(3) = $$(RPASS_FULL_TESTS) $$(CSREQ$(1)_T_$
630637
CTEST_DEPS_cfail-full_$(1)-T-$(2)-H-$(3) = $$(CFAIL_FULL_TESTS) $$(CSREQ$(1)_T_$(3)_H_$(3)) $$(SREQ$(1)_T_$(2)_H_$(3))
631638
CTEST_DEPS_rfail_$(1)-T-$(2)-H-$(3) = $$(RFAIL_TESTS)
632639
CTEST_DEPS_cfail_$(1)-T-$(2)-H-$(3) = $$(CFAIL_TESTS)
640+
CTEST_DEPS_pfail_$(1)-T-$(2)-H-$(3) = $$(PFAIL_TESTS)
633641
CTEST_DEPS_bench_$(1)-T-$(2)-H-$(3) = $$(BENCH_TESTS)
634642
CTEST_DEPS_perf_$(1)-T-$(2)-H-$(3) = $$(PERF_TESTS)
635643
CTEST_DEPS_debuginfo-gdb_$(1)-T-$(2)-H-$(3) = $$(DEBUGINFO_GDB_TESTS)
@@ -698,7 +706,7 @@ endif
698706

699707
endef
700708

701-
CTEST_NAMES = rpass rpass-valgrind rpass-full cfail-full rfail cfail bench perf debuginfo-gdb debuginfo-lldb codegen
709+
CTEST_NAMES = rpass rpass-valgrind rpass-full cfail-full rfail cfail pfail bench perf debuginfo-gdb debuginfo-lldb codegen
702710

703711
$(foreach host,$(CFG_HOST), \
704712
$(eval $(foreach target,$(CFG_TARGET), \
@@ -857,6 +865,7 @@ TEST_GROUPS = \
857865
cfail-full \
858866
rfail \
859867
cfail \
868+
pfail \
860869
bench \
861870
perf \
862871
rmake \

Diff for: src/compiletest/common.rs

+3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use std::str::FromStr;
1515
#[derive(Clone, Copy, PartialEq, Debug)]
1616
pub enum Mode {
1717
CompileFail,
18+
ParseFail,
1819
RunFail,
1920
RunPass,
2021
RunPassValgrind,
@@ -29,6 +30,7 @@ impl FromStr for Mode {
2930
fn from_str(s: &str) -> Result<Mode, ()> {
3031
match s {
3132
"compile-fail" => Ok(CompileFail),
33+
"parse-fail" => Ok(ParseFail),
3234
"run-fail" => Ok(RunFail),
3335
"run-pass" => Ok(RunPass),
3436
"run-pass-valgrind" => Ok(RunPassValgrind),
@@ -45,6 +47,7 @@ impl fmt::Display for Mode {
4547
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4648
fmt::Display::fmt(match *self {
4749
CompileFail => "compile-fail",
50+
ParseFail => "parse-fail",
4851
RunFail => "run-fail",
4952
RunPass => "run-pass",
5053
RunPassValgrind => "run-pass-valgrind",

Diff for: src/compiletest/compiletest.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#![feature(test)]
2222
#![feature(unicode)]
2323
#![feature(env)]
24+
#![feature(core)]
2425

2526
#![deny(warnings)]
2627

@@ -72,7 +73,7 @@ pub fn parse_config(args: Vec<String> ) -> Config {
7273
reqopt("", "aux-base", "directory to find auxiliary test files", "PATH"),
7374
reqopt("", "stage-id", "the target-stage identifier", "stageN-TARGET"),
7475
reqopt("", "mode", "which sort of compile tests to run",
75-
"(compile-fail|run-fail|run-pass|run-pass-valgrind|pretty|debug-info)"),
76+
"(compile-fail|parse-fail|run-fail|run-pass|run-pass-valgrind|pretty|debug-info)"),
7677
optflag("", "ignored", "run tests marked as ignored"),
7778
optopt("", "runtool", "supervisor program to run tests under \
7879
(eg. emulator, valgrind)", "PROGRAM"),

Diff for: src/compiletest/runtest.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use self::TargetLocation::*;
1212

1313
use common::Config;
14-
use common::{CompileFail, Pretty, RunFail, RunPass, RunPassValgrind, DebugInfoGdb};
14+
use common::{CompileFail, ParseFail, Pretty, RunFail, RunPass, RunPassValgrind, DebugInfoGdb};
1515
use common::{Codegen, DebugInfoLldb};
1616
use errors;
1717
use header::TestProps;
@@ -66,6 +66,7 @@ pub fn run_metrics(config: Config, testfile: String, mm: &mut MetricMap) {
6666
debug!("loaded props");
6767
match config.mode {
6868
CompileFail => run_cfail_test(&config, &props, &testfile),
69+
ParseFail => run_cfail_test(&config, &props, &testfile),
6970
RunFail => run_rfail_test(&config, &props, &testfile),
7071
RunPass => run_rpass_test(&config, &props, &testfile),
7172
RunPassValgrind => run_valgrind_test(&config, &props, &testfile),
@@ -88,7 +89,7 @@ fn run_cfail_test(config: &Config, props: &TestProps, testfile: &Path) {
8889
let proc_res = compile_test(config, props, testfile);
8990

9091
if proc_res.status.success() {
91-
fatal_proc_rec("compile-fail test compiled successfully!",
92+
fatal_proc_rec(&format!("{} test compiled successfully!", config.mode)[],
9293
&proc_res);
9394
}
9495

@@ -688,7 +689,7 @@ fn run_debuginfo_lldb_test(config: &Config, props: &TestProps, testfile: &Path)
688689
.unwrap()
689690
.to_string();
690691

691-
script_str.push_str(&format!("command script import {}\n", &rust_pp_module_abs_path[])[]);
692+
script_str.push_str(&format!("command script import {}\n", &rust_pp_module_abs_path[..])[]);
692693
script_str.push_str("type summary add --no-value ");
693694
script_str.push_str("--python-function lldb_rust_formatters.print_val ");
694695
script_str.push_str("-x \".*\" --category Rust\n");
@@ -1133,7 +1134,7 @@ fn compile_test_(config: &Config, props: &TestProps,
11331134
// FIXME (#9639): This needs to handle non-utf8 paths
11341135
let mut link_args = vec!("-L".to_string(),
11351136
aux_dir.as_str().unwrap().to_string());
1136-
link_args.extend(extra_args.iter().map(|s| s.clone()));
1137+
link_args.extend(extra_args.iter().cloned());
11371138
let args = make_compile_args(config,
11381139
props,
11391140
link_args,

Diff for: src/doc/reference.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ the final namespace qualifier is omitted.
572572
Two examples of paths with type arguments:
573573

574574
```
575-
# struct HashMap<K, V>;
575+
# struct HashMap<K, V>(K,V);
576576
# fn f() {
577577
# fn id<T>(t: T) -> T { t }
578578
type T = HashMap<i32,String>; // Type arguments used in a type expression
@@ -1599,7 +1599,7 @@ pointer values (pointing to a type for which an implementation of the given
15991599
trait is in scope) to pointers to the trait name, used as a type.
16001600

16011601
```
1602-
# trait Shape { }
1602+
# trait Shape { fn dummy(&self) { } }
16031603
# impl Shape for i32 { }
16041604
# let mycircle = 0i32;
16051605
let myshape: Box<Shape> = Box::new(mycircle) as Box<Shape>;
@@ -1630,8 +1630,8 @@ let x: f64 = Num::from_i32(42);
16301630
Traits may inherit from other traits. For example, in
16311631

16321632
```
1633-
trait Shape { fn area() -> f64; }
1634-
trait Circle : Shape { fn radius() -> f64; }
1633+
trait Shape { fn area(&self) -> f64; }
1634+
trait Circle : Shape { fn radius(&self) -> f64; }
16351635
```
16361636

16371637
the syntax `Circle : Shape` means that types that implement `Circle` must also
@@ -1725,7 +1725,7 @@ type parameters taken by the trait it implements. Implementation parameters
17251725
are written after the `impl` keyword.
17261726

17271727
```
1728-
# trait Seq<T> { }
1728+
# trait Seq<T> { fn dummy(&self, _: T) { } }
17291729
impl<T> Seq<T> for Vec<T> {
17301730
/* ... */
17311731
}
@@ -3583,7 +3583,7 @@ An example of each kind:
35833583
```{rust}
35843584
let vec: Vec<i32> = vec![1, 2, 3];
35853585
let arr: [i32; 3] = [1, 2, 3];
3586-
let s: &[i32] = &vec[];
3586+
let s: &[i32] = &vec[..];
35873587
```
35883588

35893589
As you can see, the `vec!` macro allows you to create a `Vec<T>` easily. The

Diff for: src/doc/trpl/ffi.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -435,8 +435,8 @@ extern {
435435
}
436436
437437
fn main() {
438-
let prompt = CString::from_slice(b"[my-awesome-shell] $");
439-
unsafe {
438+
let prompt = CString::new("[my-awesome-shell] $").unwrap();
439+
unsafe {
440440
rl_prompt = prompt.as_ptr();
441441
442442
println!("{:?}", rl_prompt);
@@ -541,6 +541,6 @@ pub extern fn hello_rust() -> *const u8 {
541541

542542
The `extern` makes this function adhere to the C calling convention, as
543543
discussed above in "[Foreign Calling
544-
Conventions](guide-ffi.html#foreign-calling-conventions)". The `no_mangle`
544+
Conventions](ffi.html#foreign-calling-conventions)". The `no_mangle`
545545
attribute turns off Rust's name mangling, so that it is easier to link to.
546546

Diff for: src/doc/trpl/patterns.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ If you want to match against a slice or array, you can use `&`:
180180
fn main() {
181181
let v = vec!["match_this", "1"];
182182
183-
match &v[] {
183+
match &v[..] {
184184
["match_this", second] => println!("The second element is {}", second),
185185
_ => {},
186186
}

Diff for: src/liballoc/arc.rs

+8-7
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ use core::prelude::*;
7373

7474
use core::atomic;
7575
use core::atomic::Ordering::{Relaxed, Release, Acquire, SeqCst};
76-
use core::borrow::BorrowFrom;
7776
use core::fmt;
7877
use core::cmp::{Ordering};
7978
use core::default::Default;
@@ -244,12 +243,6 @@ impl<T> Clone for Arc<T> {
244243
}
245244
}
246245

247-
impl<T> BorrowFrom<Arc<T>> for T {
248-
fn borrow_from(owned: &Arc<T>) -> &T {
249-
&**owned
250-
}
251-
}
252-
253246
#[stable(feature = "rust1", since = "1.0.0")]
254247
impl<T> Deref for Arc<T> {
255248
type Target = T;
@@ -605,11 +598,19 @@ impl<T: Default + Sync + Send> Default for Arc<T> {
605598
fn default() -> Arc<T> { Arc::new(Default::default()) }
606599
}
607600

601+
#[cfg(stage0)]
608602
impl<H: Hasher, T: Hash<H>> Hash<H> for Arc<T> {
609603
fn hash(&self, state: &mut H) {
610604
(**self).hash(state)
611605
}
612606
}
607+
#[cfg(not(stage0))]
608+
#[stable(feature = "rust1", since = "1.0.0")]
609+
impl<T: Hash> Hash for Arc<T> {
610+
fn hash<H: Hasher>(&self, state: &mut H) {
611+
(**self).hash(state)
612+
}
613+
}
613614

614615
#[cfg(test)]
615616
mod tests {

0 commit comments

Comments
 (0)