Skip to content

Commit 21cdce7

Browse files
committed
---
yaml --- r: 232748 b: refs/heads/try c: 152c76e h: refs/heads/master v: v3
1 parent a55fcea commit 21cdce7

File tree

124 files changed

+1490
-2221
lines changed

Some content is hidden

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

124 files changed

+1490
-2221
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: edeb4f1c86cbf6af8ef9874d4b3af50f721ea1b8
33
refs/heads/snap-stage3: 1af31d4974e33027a68126fa5a5a3c2c6491824f
4-
refs/heads/try: 40fd4d678706af0684cee1e95304352a6ca02837
4+
refs/heads/try: 152c76ef0d62b2529b50356773ac6907a6db0f6e
55
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
66
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
77
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try/configure

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,6 @@ valopt python "" "set path to python"
602602
valopt jemalloc-root "" "set directory where libjemalloc_pic.a is located"
603603
valopt build "${DEFAULT_BUILD}" "GNUs ./configure syntax LLVM build triple"
604604
valopt android-cross-path "/opt/ndk_standalone" "Android NDK standalone path (deprecated)"
605-
valopt i686-linux-android-ndk "" "i686-linux-android NDK standalone path"
606605
valopt arm-linux-androideabi-ndk "" "arm-linux-androideabi NDK standalone path"
607606
valopt aarch64-linux-android-ndk "" "aarch64-linux-android NDK standalone path"
608607
valopt release-channel "dev" "the name of the release channel to build"
@@ -1694,7 +1693,6 @@ putvar CFG_LIBDIR_RELATIVE
16941693
putvar CFG_DISABLE_MANAGE_SUBMODULES
16951694
putvar CFG_AARCH64_LINUX_ANDROID_NDK
16961695
putvar CFG_ARM_LINUX_ANDROIDEABI_NDK
1697-
putvar CFG_I686_LINUX_ANDROID_NDK
16981696
putvar CFG_MANDIR
16991697

17001698
# Avoid spurious warnings from clang by feeding it original source on

branches/try/mk/cfg/i686-linux-android.mk

Lines changed: 0 additions & 25 deletions
This file was deleted.

branches/try/mk/main.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ LLVM_VERSION_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --version)
294294
LLVM_BINDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --bindir)
295295
LLVM_INCDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --includedir)
296296
LLVM_LIBDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --libdir)
297-
LLVM_LIBDIR_RUSTFLAGS_$(1)=-L native="$$(LLVM_LIBDIR_$(1))"
297+
LLVM_LIBDIR_RUSTFLAGS_$(1)=-L "$$(LLVM_LIBDIR_$(1))"
298298
LLVM_LDFLAGS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --ldflags)
299299
ifeq ($$(findstring freebsd,$(1)),freebsd)
300300
# On FreeBSD, it may search wrong headers (that are for pre-installed LLVM),

branches/try/src/compiletest/compiletest.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
#![feature(str_char)]
2020
#![feature(test)]
2121
#![feature(vec_push_all)]
22-
#![feature(path_components_peek)]
2322

2423
#![deny(warnings)]
2524

branches/try/src/compiletest/runtest.rs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use std::fs::{self, File};
2525
use std::io::BufReader;
2626
use std::io::prelude::*;
2727
use std::net::TcpStream;
28-
use std::path::{Path, PathBuf, Component};
28+
use std::path::{Path, PathBuf};
2929
use std::process::{Command, Output, ExitStatus};
3030

3131
pub fn run(config: Config, testfile: &Path) {
@@ -952,9 +952,6 @@ fn check_expected_errors(expected_errors: Vec<errors::ExpectedError>,
952952
// filename:line1:col1: line2:col2: *warning:* msg
953953
// where line1:col1: is the starting point, line2:col2:
954954
// is the ending point, and * represents ANSI color codes.
955-
//
956-
// This pattern is ambiguous on windows, because filename may contain
957-
// a colon, so any path prefix must be detected and removed first.
958955
for line in proc_res.stderr.lines() {
959956
let mut was_expected = false;
960957
let mut prev = 0;
@@ -1009,16 +1006,7 @@ fn check_expected_errors(expected_errors: Vec<errors::ExpectedError>,
10091006
}
10101007
}
10111008

1012-
fn is_compiler_error_or_warning(mut line: &str) -> bool {
1013-
// Remove initial prefix which may contain a colon
1014-
let mut components = Path::new(line).components();
1015-
if let Some(Component::Prefix(_)) = components.peek() {
1016-
components.next();
1017-
}
1018-
1019-
// Safe as path was originally constructed from a &str ^
1020-
line = components.as_path().to_str().unwrap();
1021-
1009+
fn is_compiler_error_or_warning(line: &str) -> bool {
10221010
let mut i = 0;
10231011
return
10241012
scan_until_char(line, ':', &mut i) &&

branches/try/src/doc/reference.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1452,7 +1452,7 @@ fn draw_twice<T: Shape>(surface: Surface, sh: T) {
14521452
}
14531453
```
14541454

1455-
Traits also define a [trait object](#trait-objects) with the same
1455+
Traits also define an [trait object](#trait-objects) with the same
14561456
name as the trait. Values of this type are created by coercing from a
14571457
pointer of some specific type to a pointer of trait type. For example,
14581458
`&T` could be coerced to `&Shape` if `T: Shape` holds (and similarly
@@ -1881,15 +1881,11 @@ type int8_t = i8;
18811881
- `no_start` - disable linking to the `native` crate, which specifies the
18821882
"start" language item.
18831883
- `no_std` - disable linking to the `std` crate.
1884-
- `plugin` - load a list of named crates as compiler plugins, e.g.
1884+
- `plugin` load a list of named crates as compiler plugins, e.g.
18851885
`#![plugin(foo, bar)]`. Optional arguments for each plugin,
18861886
i.e. `#![plugin(foo(... args ...))]`, are provided to the plugin's
18871887
registrar function. The `plugin` feature gate is required to use
18881888
this attribute.
1889-
- `recursion_limit` - Sets the maximum depth for potentially
1890-
infinitely-recursive compile-time operations like
1891-
auto-dereference or macro expansion. The default is
1892-
`#![recursion_limit="64"]`.
18931889

18941890
### Module-only attributes
18951891

branches/try/src/doc/trpl/crates-and-modules.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ $ ls target/debug
115115
build deps examples libphrases-a7448e02a0468eaa.rlib native
116116
```
117117

118-
`libphrases-hash.rlib` is the compiled crate. Before we see how to use this
118+
`libphrase-hash.rlib` is the compiled crate. Before we see how to use this
119119
crate from another crate, let’s break it up into multiple files.
120120

121121
# Multiple file crates

branches/try/src/doc/trpl/error-handling.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,8 @@ Because these kinds of situations are relatively rare, use panics sparingly.
208208

209209
In certain circumstances, even though a function may fail, we may want to treat
210210
it as a panic instead. For example, `io::stdin().read_line(&mut buffer)` returns
211-
a `Result<usize>`, which can indicate an error if one occurs when reading the line.
212-
This allows us to handle and possibly recover from errors.
211+
a `Result<usize>`, when there is an error reading the line. This allows us to
212+
handle and possibly recover from error.
213213

214214
If we don't want to handle this error, and would rather just abort the program,
215215
we can use the `unwrap()` method:

branches/try/src/doc/trpl/testing.md

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -219,66 +219,6 @@ fn it_works() {
219219
This is a very common use of `assert_eq!`: call some function with
220220
some known arguments and compare it to the expected output.
221221

222-
# The `ignore` attribute
223-
224-
Sometimes a few specific tests can be very time-consuming to execute. These
225-
can be disabled by default by using the `ignore` attribute:
226-
227-
```rust
228-
#[test]
229-
fn it_works() {
230-
assert_eq!(4, add_two(2));
231-
}
232-
233-
#[test]
234-
#[ignore]
235-
fn expensive_test() {
236-
// code that takes an hour to run
237-
}
238-
```
239-
240-
Now we run our tests and see that `it_works` is run, but `expensive_test` is
241-
not:
242-
243-
```bash
244-
$ cargo test
245-
Compiling adder v0.0.1 (file:///home/you/projects/adder)
246-
Running target/adder-91b3e234d4ed382a
247-
248-
running 2 tests
249-
test expensive_test ... ignored
250-
test it_works ... ok
251-
252-
test result: ok. 1 passed; 0 failed; 1 ignored; 0 measured
253-
254-
Doc-tests adder
255-
256-
running 0 tests
257-
258-
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured
259-
```
260-
261-
The expensive tests can be run explicitly using `cargo test -- --ignored`:
262-
263-
```bash
264-
$ cargo test -- --ignored
265-
Running target/adder-91b3e234d4ed382a
266-
267-
running 1 test
268-
test expensive_test ... ok
269-
270-
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
271-
272-
Doc-tests adder
273-
274-
running 0 tests
275-
276-
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured
277-
```
278-
279-
The `--ignored` argument is an argument to the test binary, and not to cargo,
280-
which is why the command is `cargo test -- --ignored`.
281-
282222
# The `tests` module
283223

284224
There is one way in which our existing example is not idiomatic: it's

branches/try/src/liballoc/arc.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ use boxed::Box;
7373

7474
use core::sync::atomic;
7575
use core::sync::atomic::Ordering::{Relaxed, Release, Acquire, SeqCst};
76-
use core::borrow;
7776
use core::fmt;
7877
use core::cmp::Ordering;
7978
use core::mem::{align_of_val, size_of_val};
@@ -1110,7 +1109,3 @@ mod tests {
11101109
assert!(y.upgrade().is_none());
11111110
}
11121111
}
1113-
1114-
impl<T: ?Sized> borrow::Borrow<T> for Arc<T> {
1115-
fn borrow(&self) -> &T { &**self }
1116-
}

branches/try/src/liballoc/boxed.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ use heap;
5757
use raw_vec::RawVec;
5858

5959
use core::any::Any;
60-
use core::borrow;
6160
use core::cmp::Ordering;
6261
use core::fmt;
6362
use core::hash::{self, Hash};
@@ -563,10 +562,3 @@ impl<T: Clone> Clone for Box<[T]> {
563562
}
564563
}
565564

566-
impl<T: ?Sized> borrow::Borrow<T> for Box<T> {
567-
fn borrow(&self) -> &T { &**self }
568-
}
569-
570-
impl<T: ?Sized> borrow::BorrowMut<T> for Box<T> {
571-
fn borrow_mut(&mut self) -> &mut T { &mut **self }
572-
}

branches/try/src/liballoc/rc.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ use boxed::Box;
158158
#[cfg(test)]
159159
use std::boxed::Box;
160160

161-
use core::borrow;
162161
use core::cell::Cell;
163162
use core::cmp::Ordering;
164163
use core::fmt;
@@ -1092,7 +1091,3 @@ mod tests {
10921091
assert_eq!(foo, foo.clone());
10931092
}
10941093
}
1095-
1096-
impl<T: ?Sized> borrow::Borrow<T> for Rc<T> {
1097-
fn borrow(&self) -> &T { &**self }
1098-
}

branches/try/src/libcollections/borrow.rs

Lines changed: 110 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,119 @@ use core::ops::Deref;
2121
use core::option::Option;
2222

2323
use fmt;
24+
use alloc::{boxed, rc, arc};
2425

2526
use self::Cow::*;
2627

27-
pub use core::borrow::{Borrow, BorrowMut};
28+
/// A trait for borrowing data.
29+
///
30+
/// In general, there may be several ways to "borrow" a piece of data. The
31+
/// typical ways of borrowing a type `T` are `&T` (a shared borrow) and `&mut T`
32+
/// (a mutable borrow). But types like `Vec<T>` provide additional kinds of
33+
/// borrows: the borrowed slices `&[T]` and `&mut [T]`.
34+
///
35+
/// When writing generic code, it is often desirable to abstract over all ways
36+
/// of borrowing data from a given type. That is the role of the `Borrow`
37+
/// trait: if `T: Borrow<U>`, then `&U` can be borrowed from `&T`. A given
38+
/// type can be borrowed as multiple different types. In particular, `Vec<T>:
39+
/// Borrow<Vec<T>>` and `Vec<T>: Borrow<[T]>`.
40+
///
41+
/// If you are implementing `Borrow` and both `Self` and `Borrowed` implement
42+
/// `Hash`, `Eq`, and/or `Ord`, they must produce the same result.
43+
///
44+
/// `Borrow` is very similar to, but different than, `AsRef`. See
45+
/// [the book][book] for more.
46+
///
47+
/// [book]: ../../book/borrow-and-asref.html
48+
#[stable(feature = "rust1", since = "1.0.0")]
49+
pub trait Borrow<Borrowed: ?Sized> {
50+
/// Immutably borrows from an owned value.
51+
///
52+
/// # Examples
53+
///
54+
/// ```
55+
/// use std::borrow::Borrow;
56+
///
57+
/// fn check<T: Borrow<str>>(s: T) {
58+
/// assert_eq!("Hello", s.borrow());
59+
/// }
60+
///
61+
/// let s = "Hello".to_string();
62+
///
63+
/// check(s);
64+
///
65+
/// let s = "Hello";
66+
///
67+
/// check(s);
68+
/// ```
69+
#[stable(feature = "rust1", since = "1.0.0")]
70+
fn borrow(&self) -> &Borrowed;
71+
}
72+
73+
/// A trait for mutably borrowing data.
74+
///
75+
/// Similar to `Borrow`, but for mutable borrows.
76+
#[stable(feature = "rust1", since = "1.0.0")]
77+
pub trait BorrowMut<Borrowed: ?Sized> : Borrow<Borrowed> {
78+
/// Mutably borrows from an owned value.
79+
///
80+
/// # Examples
81+
///
82+
/// ```
83+
/// use std::borrow::BorrowMut;
84+
///
85+
/// fn check<T: BorrowMut<[i32]>>(mut v: T) {
86+
/// assert_eq!(&mut [1, 2, 3], v.borrow_mut());
87+
/// }
88+
///
89+
/// let v = vec![1, 2, 3];
90+
///
91+
/// check(v);
92+
/// ```
93+
#[stable(feature = "rust1", since = "1.0.0")]
94+
fn borrow_mut(&mut self) -> &mut Borrowed;
95+
}
96+
97+
#[stable(feature = "rust1", since = "1.0.0")]
98+
impl<T: ?Sized> Borrow<T> for T {
99+
fn borrow(&self) -> &T { self }
100+
}
101+
102+
#[stable(feature = "rust1", since = "1.0.0")]
103+
impl<T: ?Sized> BorrowMut<T> for T {
104+
fn borrow_mut(&mut self) -> &mut T { self }
105+
}
106+
107+
#[stable(feature = "rust1", since = "1.0.0")]
108+
impl<'a, T: ?Sized> Borrow<T> for &'a T {
109+
fn borrow(&self) -> &T { &**self }
110+
}
111+
112+
#[stable(feature = "rust1", since = "1.0.0")]
113+
impl<'a, T: ?Sized> Borrow<T> for &'a mut T {
114+
fn borrow(&self) -> &T { &**self }
115+
}
116+
117+
#[stable(feature = "rust1", since = "1.0.0")]
118+
impl<'a, T: ?Sized> BorrowMut<T> for &'a mut T {
119+
fn borrow_mut(&mut self) -> &mut T { &mut **self }
120+
}
121+
122+
impl<T: ?Sized> Borrow<T> for boxed::Box<T> {
123+
fn borrow(&self) -> &T { &**self }
124+
}
125+
126+
impl<T: ?Sized> BorrowMut<T> for boxed::Box<T> {
127+
fn borrow_mut(&mut self) -> &mut T { &mut **self }
128+
}
129+
130+
impl<T: ?Sized> Borrow<T> for rc::Rc<T> {
131+
fn borrow(&self) -> &T { &**self }
132+
}
133+
134+
impl<T: ?Sized> Borrow<T> for arc::Arc<T> {
135+
fn borrow(&self) -> &T { &**self }
136+
}
28137

29138
#[stable(feature = "rust1", since = "1.0.0")]
30139
impl<'a, B: ?Sized> Borrow<B> for Cow<'a, B> where B: ToOwned, <B as ToOwned>::Owned: 'a {

0 commit comments

Comments
 (0)