Skip to content

Commit 21b09bc

Browse files
committed
---
yaml --- r: 42958 b: refs/heads/try c: 7d5322c h: refs/heads/master v: v3
1 parent dab1cd0 commit 21b09bc

Some content is hidden

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

62 files changed

+248
-260
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: 19dfec2aaf746535de1521f68421f9980dbf25de
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 2f46b763da2c098913884f101b6d71d69af41b49
5-
refs/heads/try: e08a805b306398b316a489f76960569ac19b25b2
5+
refs/heads/try: 7d5322cf09900816d40618b70d329b8bd386ee3b
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: a810c03263670238bccd64cabb12a23a46e3a278

branches/try/doc/rust.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1719,12 +1719,15 @@ vec_elems : [expr [',' expr]*] | [expr ',' ".." expr]
17191719

17201720
A [_vector_](#vector-types) _expression_ is written by enclosing zero or
17211721
more comma-separated expressions of uniform type in square brackets.
1722+
The keyword `mut` can be written after the opening bracket to
1723+
indicate that the elements of the resulting vector may be mutated.
1724+
When no mutability is specified, the vector is immutable.
17221725

17231726
~~~~
17241727
[1, 2, 3, 4];
17251728
["a", "b", "c", "d"];
17261729
[0, ..128]; // vector with 128 zeros
1727-
[0u8, 0u8, 0u8, 0u8];
1730+
[mut 0u8, 0u8, 0u8, 0u8];
17281731
~~~~
17291732

17301733
### Index expressions
@@ -1746,6 +1749,7 @@ task in a _failing state_.
17461749
# do task::spawn_unlinked {
17471750
17481751
([1, 2, 3, 4])[0];
1752+
([mut 'x', 'y'])[1] = 'z';
17491753
(["a", "b"])[10]; // fails
17501754
17511755
# }
@@ -1908,8 +1912,8 @@ No allocation or destruction is entailed.
19081912
An example of three different swap expressions:
19091913

19101914
~~~~~~~~
1911-
# let mut x = &mut [0];
1912-
# let mut a = &mut [0];
1915+
# let mut x = &[mut 0];
1916+
# let mut a = &[mut 0];
19131917
# let i = 0;
19141918
# let y = {mut z: 0};
19151919
# let b = {mut c: 0};
@@ -2004,11 +2008,11 @@ the unary copy operator is typically only used to cause an argument to a functio
20042008
An example of a copy expression:
20052009

20062010
~~~~
2007-
fn mutate(mut vec: ~[int]) {
2011+
fn mutate(vec: ~[mut int]) {
20082012
vec[0] = 10;
20092013
}
20102014
2011-
let v = ~[1,2,3];
2015+
let v = ~[mut 1,2,3];
20122016
20132017
mutate(copy v); // Pass a copy
20142018

branches/try/doc/tutorial.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1795,7 +1795,7 @@ Generic `type`, `struct`, and `enum` declarations follow the same pattern:
17951795
type Set<T> = HashMap<T, ()>;
17961796
17971797
struct Stack<T> {
1798-
elements: ~[T]
1798+
elements: ~[mut T]
17991799
}
18001800
18011801
enum Option<T> {

branches/try/src/libcore/io.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -490,25 +490,25 @@ pub fn FILERes(f: *libc::FILE) -> FILERes {
490490
}
491491
}
492492

493-
pub fn FILE_reader(f: *libc::FILE, cleanup: bool) -> Reader {
493+
pub fn FILE_reader(f: *libc::FILE, cleanup: bool) -> @Reader {
494494
if cleanup {
495-
Wrapper { base: f, cleanup: FILERes(f) } as Reader
495+
@Wrapper { base: f, cleanup: FILERes(f) } as @Reader
496496
} else {
497-
f as Reader
497+
@f as @Reader
498498
}
499499
}
500500

501501
// FIXME (#2004): this should either be an trait-less impl, a set of
502502
// top-level functions that take a reader, or a set of default methods on
503503
// reader (which can then be called reader)
504504

505-
pub fn stdin() -> Reader {
505+
pub fn stdin() -> @Reader {
506506
unsafe {
507-
rustrt::rust_get_stdin() as Reader
507+
rustrt::rust_get_stdin() as @Reader
508508
}
509509
}
510510

511-
pub fn file_reader(path: &Path) -> Result<Reader, ~str> {
511+
pub fn file_reader(path: &Path) -> Result<@Reader, ~str> {
512512
unsafe {
513513
let f = os::as_c_charp(path.to_str(), |pathbuf| {
514514
os::as_c_charp("r", |modebuf|
@@ -555,11 +555,11 @@ impl BytesReader: Reader {
555555
fn tell(&self) -> uint { self.pos }
556556
}
557557
558-
pub pure fn with_bytes_reader<t>(bytes: &[u8], f: fn(Reader) -> t) -> t {
559-
f(BytesReader { bytes: bytes, pos: 0u } as Reader)
558+
pub pure fn with_bytes_reader<t>(bytes: &[u8], f: fn(@Reader) -> t) -> t {
559+
f(@BytesReader { bytes: bytes, pos: 0u } as @Reader)
560560
}
561561
562-
pub pure fn with_str_reader<T>(s: &str, f: fn(Reader) -> T) -> T {
562+
pub pure fn with_str_reader<T>(s: &str, f: fn(@Reader) -> T) -> T {
563563
str::byte_slice(s, |bytes| with_bytes_reader(bytes, f))
564564
}
565565

branches/try/src/libcore/num/f32.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ pub pure fn to_str_digits(num: f32, dig: uint) -> ~str {
439439

440440
impl f32: to_str::ToStr {
441441
#[inline(always)]
442-
pure fn to_str(&self) -> ~str { to_str_digits(*self, 8) }
442+
pure fn to_str() -> ~str { to_str_digits(self, 8) }
443443
}
444444

445445
impl f32: num::ToStrRadix {

branches/try/src/libcore/num/f64.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ pub pure fn to_str_digits(num: f64, dig: uint) -> ~str {
463463

464464
impl f64: to_str::ToStr {
465465
#[inline(always)]
466-
pure fn to_str(&self) -> ~str { to_str_digits(*self, 8) }
466+
pure fn to_str() -> ~str { to_str_digits(self, 8) }
467467
}
468468

469469
impl f64: num::ToStrRadix {

branches/try/src/libcore/num/float.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ pub pure fn to_str_digits(num: float, digits: uint) -> ~str {
206206
207207
impl float: to_str::ToStr {
208208
#[inline(always)]
209-
pure fn to_str(&self) -> ~str { to_str_digits(*self, 8) }
209+
pure fn to_str() -> ~str { to_str_digits(self, 8) }
210210
}
211211
212212
impl float: num::ToStrRadix {

branches/try/src/libcore/num/int-template.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,8 @@ pub pure fn str(i: T) -> ~str { to_str(i) }
287287
288288
impl T : ToStr {
289289
#[inline(always)]
290-
pure fn to_str(&self) -> ~str {
291-
to_str(*self)
290+
pure fn to_str() -> ~str {
291+
to_str(self)
292292
}
293293
}
294294

branches/try/src/libcore/num/uint-template.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,8 @@ pub pure fn str(i: T) -> ~str { to_str(i) }
249249
250250
impl T : ToStr {
251251
#[inline(always)]
252-
pure fn to_str(&self) -> ~str {
253-
to_str(*self)
252+
pure fn to_str() -> ~str {
253+
to_str(self)
254254
}
255255
}
256256

branches/try/src/libcore/path.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ impl Path {
368368
}
369369

370370
impl PosixPath : ToStr {
371-
pure fn to_str(&self) -> ~str {
371+
pure fn to_str() -> ~str {
372372
let mut s = ~"";
373373
if self.is_absolute {
374374
s += "/";
@@ -531,7 +531,7 @@ impl PosixPath : GenericPath {
531531

532532

533533
impl WindowsPath : ToStr {
534-
pure fn to_str(&self) -> ~str {
534+
pure fn to_str() -> ~str {
535535
let mut s = ~"";
536536
match self.host {
537537
Some(ref h) => { s += "\\\\"; s += *h; }

branches/try/src/libcore/to_str.rs

Lines changed: 18 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -22,68 +22,52 @@ use kinds::Copy;
2222
use str;
2323
use vec;
2424

25-
pub trait ToStr {
26-
pure fn to_str(&self) -> ~str;
27-
}
25+
pub trait ToStr { pub pure fn to_str() -> ~str; }
2826

2927
impl bool: ToStr {
3028
#[inline(always)]
31-
pure fn to_str(&self) -> ~str { ::bool::to_str(*self) }
29+
pure fn to_str() -> ~str { ::bool::to_str(self) }
3230
}
3331
impl (): ToStr {
3432
#[inline(always)]
35-
pure fn to_str(&self) -> ~str { ~"()" }
33+
pure fn to_str() -> ~str { ~"()" }
3634
}
3735
impl ~str: ToStr {
3836
#[inline(always)]
39-
pure fn to_str(&self) -> ~str { copy *self }
37+
pure fn to_str() -> ~str { copy self }
4038
}
4139
impl &str: ToStr {
4240
#[inline(always)]
43-
pure fn to_str(&self) -> ~str { ::str::from_slice(*self) }
41+
pure fn to_str() -> ~str { ::str::from_slice(self) }
4442
}
4543
impl @str: ToStr {
4644
#[inline(always)]
47-
pure fn to_str(&self) -> ~str { ::str::from_slice(*self) }
45+
pure fn to_str() -> ~str { ::str::from_slice(self) }
4846
}
4947

50-
impl<A: ToStr, B: ToStr> (A, B): ToStr {
48+
impl<A: ToStr Copy, B: ToStr Copy> (A, B): ToStr {
5149
#[inline(always)]
52-
pure fn to_str(&self) -> ~str {
53-
// FIXME(#4760): this causes an llvm assertion
54-
//let &(ref a, ref b) = self;
55-
match *self {
56-
(ref a, ref b) => {
57-
~"(" + a.to_str() + ~", " + b.to_str() + ~")"
58-
}
59-
}
50+
pure fn to_str() -> ~str {
51+
let (a, b) = self;
52+
~"(" + a.to_str() + ~", " + b.to_str() + ~")"
6053
}
6154
}
62-
impl<A: ToStr, B: ToStr, C: ToStr> (A, B, C): ToStr {
55+
impl<A: ToStr Copy, B: ToStr Copy, C: ToStr Copy> (A, B, C): ToStr {
6356
#[inline(always)]
64-
pure fn to_str(&self) -> ~str {
65-
// FIXME(#4760): this causes an llvm assertion
66-
//let &(ref a, ref b, ref c) = self;
67-
match *self {
68-
(ref a, ref b, ref c) => {
69-
fmt!("(%s, %s, %s)",
70-
(*a).to_str(),
71-
(*b).to_str(),
72-
(*c).to_str()
73-
)
74-
}
75-
}
57+
pure fn to_str() -> ~str {
58+
let (a, b, c) = self;
59+
~"(" + a.to_str() + ~", " + b.to_str() + ~", " + c.to_str() + ~")"
7660
}
7761
}
7862

7963
impl<A: ToStr> ~[A]: ToStr {
8064
#[inline(always)]
81-
pure fn to_str(&self) -> ~str {
65+
pure fn to_str() -> ~str {
8266
unsafe {
8367
// Bleh -- not really unsafe
8468
// push_str and push_char
8569
let mut acc = ~"[", first = true;
86-
for self.each |elt| {
70+
for vec::each(self) |elt| {
8771
unsafe {
8872
if first { first = false; }
8973
else { str::push_str(&mut acc, ~", "); }
@@ -98,11 +82,11 @@ impl<A: ToStr> ~[A]: ToStr {
9882
9983
impl<A: ToStr> @A: ToStr {
10084
#[inline(always)]
101-
pure fn to_str(&self) -> ~str { ~"@" + (**self).to_str() }
85+
pure fn to_str() -> ~str { ~"@" + (*self).to_str() }
10286
}
10387
impl<A: ToStr> ~A: ToStr {
10488
#[inline(always)]
105-
pure fn to_str(&self) -> ~str { ~"~" + (**self).to_str() }
89+
pure fn to_str() -> ~str { ~"~" + (*self).to_str() }
10690
}
10791

10892
#[cfg(test)]

branches/try/src/libfuzzer/cycles.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ type pointy = {
4343
mut g : fn~()->(),
4444

4545
mut m : ~[maybe_pointy],
46-
mut n : ~[maybe_pointy],
46+
mut n : ~[mut maybe_pointy],
4747
mut o : {x : int, y : maybe_pointy}
4848
};
4949
// To add: objects; traits; anything type-parameterized?
@@ -58,7 +58,7 @@ fn empty_pointy() -> @pointy {
5858
mut g : fn~()->(){},
5959

6060
mut m : ~[],
61-
mut n : ~[],
61+
mut n : ~[mut],
6262
mut o : {x : 0, y : none}
6363
}
6464
}
@@ -68,7 +68,7 @@ fn nop<T>(_x: T) { }
6868

6969
fn test_cycles(r : rand::rng, k: uint, n: uint)
7070
{
71-
let mut v : ~[@pointy] = ~[];
71+
let v : ~[mut @pointy] = ~[mut];
7272

7373
// Create a graph with no edges
7474
range(0u, vlen) {|_i|

branches/try/src/libfuzzer/rand_util.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ fn choice<T: copy>(r : rand::rng, v : ~[T]) -> T {
2525
fn unlikely(r : rand::rng, n : uint) -> bool { under(r, n) == 0u }
2626

2727
// shuffle a vec in place
28-
fn shuffle<T>(r : rand::rng, &v : ~[T]) {
28+
fn shuffle<T>(r : rand::rng, &v : ~[mut T]) {
2929
let i = vec::len(v);
3030
while i >= 2u {
3131
// Loop invariant: elements with index >= i have been locked in place.
@@ -86,7 +86,7 @@ fn main()
8686
log(error, choice(r, ~[10, 20, 30]));
8787
log(error, if unlikely(r, 5u) { "unlikely" } else { "likely" });
8888

89-
let mut a = ~[1, 2, 3];
89+
let a = ~[mut 1, 2, 3];
9090
shuffle(r, a);
9191
log(error, a);
9292

branches/try/src/librustc/middle/liveness.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,11 +222,11 @@ pub fn check_crate(tcx: ty::ctxt,
222222
}
223223

224224
impl LiveNode: to_str::ToStr {
225-
pure fn to_str(&self) -> ~str { fmt!("ln(%u)", **self) }
225+
pure fn to_str() -> ~str { fmt!("ln(%u)", *self) }
226226
}
227227

228228
impl Variable: to_str::ToStr {
229-
pure fn to_str(&self) -> ~str { fmt!("v(%u)", **self) }
229+
pure fn to_str() -> ~str { fmt!("v(%u)", *self) }
230230
}
231231

232232
// ______________________________________________________________________

branches/try/src/librustc/middle/trans/closure.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ pub struct EnvValue {
121121
}
122122

123123
pub impl EnvAction {
124-
fn to_str(&self) -> ~str {
125-
match *self {
124+
fn to_str() -> ~str {
125+
match self {
126126
EnvCopy => ~"EnvCopy",
127127
EnvMove => ~"EnvMove",
128128
EnvRef => ~"EnvRef"

branches/try/src/librustc/middle/trans/common.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -720,7 +720,7 @@ pub impl block {
720720
fn ty_to_str(t: ty::t) -> ~str {
721721
ty_to_str(self.tcx(), t)
722722
}
723-
fn to_str(&self) -> ~str {
723+
fn to_str() -> ~str {
724724
match self.node_info {
725725
Some(node_info) => {
726726
fmt!("[block %d]", node_info.id)

branches/try/src/librustc/middle/trans/datum.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,7 @@ pub impl DatumBlock {
841841
self.bcx.tcx()
842842
}
843843

844-
fn to_str(&self) -> ~str {
844+
fn to_str() -> ~str {
845845
self.datum.to_str(self.ccx())
846846
}
847847
}

0 commit comments

Comments
 (0)