Skip to content

Commit e190c45

Browse files
committed
---
yaml --- r: 196143 b: refs/heads/tmp c: 085bcfa h: refs/heads/master i: 196141: a1495b7 196139: 51831ce 196135: fed4ffc 196127: f85acb9 v: v3
1 parent 4233643 commit e190c45

Some content is hidden

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

55 files changed

+650
-994
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ refs/heads/building: 126db549b038c84269a1e4fe46f051b2c15d6970
3232
refs/heads/beta: 9854143cba679834bc4ef932858cd5303f015a0e
3333
refs/heads/windistfix: 7608dbad651f02e837ed05eef3d74a6662a6e928
3434
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
35-
refs/heads/tmp: b4457fb8a2157d7e9a983ba67e5554509017379d
35+
refs/heads/tmp: 085bcfa37e42d807eb292085b57d0559424635a8
3636
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f
3737
refs/tags/homu-tmp: 53a183f0274316596bf9405944d4f0468d8c93e4
3838
refs/heads/gate: 97c84447b65164731087ea82685580cc81424412

branches/tmp/src/doc/reference.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,15 +1188,12 @@ the guarantee that these issues are never caused by safe code.
11881188

11891189
* Data races
11901190
* Dereferencing a null/dangling raw pointer
1191+
* Mutating an immutable value/reference without `UnsafeCell`
11911192
* Reads of [undef](http://llvm.org/docs/LangRef.html#undefined-values)
11921193
(uninitialized) memory
11931194
* Breaking the [pointer aliasing
11941195
rules](http://llvm.org/docs/LangRef.html#pointer-aliasing-rules)
11951196
with raw pointers (a subset of the rules used by C)
1196-
* `&mut` and `&` follow LLVM’s scoped [noalias] model, except if the `&T`
1197-
contains an `UnsafeCell<U>`. Unsafe code must not violate these aliasing
1198-
guarantees.
1199-
* Mutating an immutable value/reference without `UnsafeCell<U>`
12001197
* Invoking undefined behavior via compiler intrinsics:
12011198
* Indexing outside of the bounds of an object with `std::ptr::offset`
12021199
(`offset` intrinsic), with
@@ -1213,8 +1210,6 @@ the guarantee that these issues are never caused by safe code.
12131210
code. Rust's failure system is not compatible with exception handling in
12141211
other languages. Unwinding must be caught and handled at FFI boundaries.
12151212

1216-
[noalias]: http://llvm.org/docs/LangRef.html#noalias
1217-
12181213
##### Behaviour not considered unsafe
12191214

12201215
This is a list of behaviour not considered *unsafe* in Rust terms, but that may

branches/tmp/src/doc/trpl/method-syntax.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ parameter, of which there are three variants: `self`, `&self`, and `&mut self`.
5050
You can think of this first parameter as being the `x` in `x.foo()`. The three
5151
variants correspond to the three kinds of thing `x` could be: `self` if it's
5252
just a value on the stack, `&self` if it's a reference, and `&mut self` if it's
53-
a mutable reference. We should default to using `&self`, as you should prefer
54-
borrowing over taking ownership, as well as taking immutable references
55-
over mutable ones. Here's an example of all three variants:
53+
a mutable reference. We should default to using `&self`, as it's the most
54+
common, as Rustaceans prefer borrowing over taking ownership, and references
55+
over mutable references. Here's an example of all three variants:
5656

5757
```rust
5858
struct Circle {

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

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -472,15 +472,10 @@ thread-safe counterpart of `Rc<T>`.
472472

473473
## Lifetime Elision
474474

475-
Rust supports powerful local type inference in function bodies, but it’s
476-
forbidden in item signatures to allow reasoning about the types just based in
477-
the item signature alone. However, for ergonomic reasons a very restricted
478-
secondary inference algorithm called “lifetime elision” applies in function
479-
signatures. It infers only based on the signature components themselves and not
480-
based on the body of the function, only infers lifetime paramters, and does
481-
this with only three easily memorizable and unambiguous rules. This makes
482-
lifetime elision a shorthand for writing an item signature, while not hiding
483-
away the actual types involved as full local inference would if applied to it.
475+
Earlier, we mentioned *lifetime elision*, a feature of Rust which allows you to
476+
not write lifetime annotations in certain circumstances. All references have a
477+
lifetime, and so if you elide a lifetime (like `&T` instead of `&'a T`), Rust
478+
will do three things to determine what those lifetimes should be.
484479

485480
When talking about lifetime elision, we use the term *input lifetime* and
486481
*output lifetime*. An *input lifetime* is a lifetime associated with a parameter

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ pub fn add_two(a: i32) -> i32 {
231231
}
232232
233233
#[cfg(test)]
234-
mod test {
234+
mod tests {
235235
use super::add_two;
236236
237237
#[test]
@@ -241,7 +241,7 @@ mod test {
241241
}
242242
```
243243

244-
There's a few changes here. The first is the introduction of a `mod test` with
244+
There's a few changes here. The first is the introduction of a `mod tests` with
245245
a `cfg` attribute. The module allows us to group all of our tests together, and
246246
to also define helper functions if needed, that don't become a part of the rest
247247
of our crate. The `cfg` attribute only compiles our test code if we're
@@ -260,7 +260,7 @@ pub fn add_two(a: i32) -> i32 {
260260
}
261261
262262
#[cfg(test)]
263-
mod test {
263+
mod tests {
264264
use super::*;
265265
266266
#[test]

branches/tmp/src/libcollectionstest/bench.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ macro_rules! map_insert_rand_bench {
2222
let mut rng = rand::weak_rng();
2323

2424
for _ in 0..n {
25-
let i = rng.gen::<usize>() % n;
25+
let i = rng.gen() % n;
2626
map.insert(i, i);
2727
}
2828

2929
// measure
3030
b.iter(|| {
31-
let k = rng.gen::<usize>() % n;
31+
let k = rng.gen() % n;
3232
map.insert(k, k);
3333
map.remove(&k);
3434
});
@@ -77,7 +77,7 @@ macro_rules! map_find_rand_bench {
7777

7878
// setup
7979
let mut rng = rand::weak_rng();
80-
let mut keys: Vec<_> = (0..n).map(|_| rng.gen::<usize>() % n).collect();
80+
let mut keys: Vec<_> = (0..n).map(|_| rng.gen() % n).collect();
8181

8282
for &k in &keys {
8383
map.insert(k, k);

branches/tmp/src/libcore/error.rs

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,30 +48,33 @@
4848
//! For example,
4949
//!
5050
//! ```
51-
//! #![feature(core)]
51+
//! # #![feature(os, old_io, old_path)]
5252
//! use std::error::FromError;
53-
//! use std::{io, str};
54-
//! use std::fs::File;
53+
//! use std::old_io::{File, IoError};
54+
//! use std::os::{MemoryMap, MapError};
55+
//! use std::old_path::Path;
5556
//!
5657
//! enum MyError {
57-
//! Io(io::Error),
58-
//! Utf8(str::Utf8Error),
58+
//! Io(IoError),
59+
//! Map(MapError)
5960
//! }
6061
//!
61-
//! impl FromError<io::Error> for MyError {
62-
//! fn from_error(err: io::Error) -> MyError { MyError::Io(err) }
62+
//! impl FromError<IoError> for MyError {
63+
//! fn from_error(err: IoError) -> MyError {
64+
//! MyError::Io(err)
65+
//! }
6366
//! }
6467
//!
65-
//! impl FromError<str::Utf8Error> for MyError {
66-
//! fn from_error(err: str::Utf8Error) -> MyError { MyError::Utf8(err) }
68+
//! impl FromError<MapError> for MyError {
69+
//! fn from_error(err: MapError) -> MyError {
70+
//! MyError::Map(err)
71+
//! }
6772
//! }
6873
//!
6974
//! #[allow(unused_variables)]
7075
//! fn open_and_map() -> Result<(), MyError> {
71-
//! let b = b"foo.txt";
72-
//! let s = try!(str::from_utf8(b));
73-
//! let f = try!(File::open(s));
74-
//!
76+
//! let f = try!(File::open(&Path::new("foo.txt")));
77+
//! let m = try!(MemoryMap::new(0, &[]));
7578
//! // do something interesting here...
7679
//! Ok(())
7780
//! }

branches/tmp/src/libcore/ops.rs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,6 @@ pub trait Neg {
485485
macro_rules! neg_impl {
486486
($($t:ty)*) => ($(
487487
#[stable(feature = "rust1", since = "1.0.0")]
488-
#[allow(unsigned_negation)]
489488
impl Neg for $t {
490489
#[stable(feature = "rust1", since = "1.0.0")]
491490
type Output = $t;
@@ -499,7 +498,28 @@ macro_rules! neg_impl {
499498
)*)
500499
}
501500

502-
neg_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 f32 f64 }
501+
macro_rules! neg_uint_impl {
502+
($t:ty, $t_signed:ty) => {
503+
#[stable(feature = "rust1", since = "1.0.0")]
504+
impl Neg for $t {
505+
type Output = $t;
506+
507+
#[inline]
508+
fn neg(self) -> $t { -(self as $t_signed) as $t }
509+
}
510+
511+
forward_ref_unop! { impl Neg, neg for $t }
512+
}
513+
}
514+
515+
neg_impl! { isize i8 i16 i32 i64 f32 f64 }
516+
517+
neg_uint_impl! { usize, isize }
518+
neg_uint_impl! { u8, i8 }
519+
neg_uint_impl! { u16, i16 }
520+
neg_uint_impl! { u32, i32 }
521+
neg_uint_impl! { u64, i64 }
522+
503523

504524
/// The `Not` trait is used to specify the functionality of unary `!`.
505525
///

branches/tmp/src/libcore/option.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ impl<T> Option<T> {
333333
}
334334
}
335335

336-
/// Moves the value `v` out of the `Option<T>` if the content of the `Option<T>` is a `Some(v)`.
336+
/// Moves the value `v` out of the `Option<T>` if it is `Some(v)`.
337337
///
338338
/// # Panics
339339
///

branches/tmp/src/librand/distributions/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ fn ziggurat<R: Rng, P, Z>(
256256
return zero_case(rng, u);
257257
}
258258
// algebraically equivalent to f1 + DRanU()*(f0 - f1) < 1
259-
if f_tab[i + 1] + (f_tab[i] - f_tab[i + 1]) * rng.gen::<f64>() < pdf(x) {
259+
if f_tab[i + 1] + (f_tab[i] - f_tab[i + 1]) * rng.gen() < pdf(x) {
260260
return x;
261261
}
262262
}

branches/tmp/src/librand/distributions/range.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ macro_rules! float_impl {
154154
}
155155
}
156156
fn sample_range<R: Rng>(r: &Range<$ty>, rng: &mut R) -> $ty {
157-
r.low + r.range * rng.gen::<$ty>()
157+
r.low + r.range * rng.gen()
158158
}
159159
}
160160
}

branches/tmp/src/librustc/middle/expr_use_visitor.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -885,11 +885,6 @@ impl<'d,'t,'tcx,TYPER:mc::Typer<'tcx>> ExprUseVisitor<'d,'t,'tcx,TYPER> {
885885
}
886886
}
887887

888-
// When this returns true, it means that the expression *is* a
889-
// method-call (i.e. via the operator-overload). This true result
890-
// also implies that walk_overloaded_operator already took care of
891-
// recursively processing the input arguments, and thus the caller
892-
// should not do so.
893888
fn walk_overloaded_operator(&mut self,
894889
expr: &ast::Expr,
895890
receiver: &ast::Expr,

0 commit comments

Comments
 (0)