From 1c3bfa4550c5e8c245499e9214ce0f758dcbed58 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 3 Oct 2012 19:25:24 -0700 Subject: libstd: Make vec_from_set pure --- src/libstd/map.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/libstd') diff --git a/src/libstd/map.rs b/src/libstd/map.rs index cc42c562376..90476ea101a 100644 --- a/src/libstd/map.rs +++ b/src/libstd/map.rs @@ -382,7 +382,7 @@ pub fn set_add(set: Set, key: K) -> bool { } /// Convert a set into a vector. -pub fn vec_from_set(s: Set) -> ~[T] { +pub pure fn vec_from_set(s: Set) -> ~[T] { do vec::build_sized(s.size()) |push| { for s.each_key() |k| { push(k); -- cgit 1.4.1-3-g733a5 From a06b90322cb4b61a3a20e12ab3406cff809c586c Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Thu, 4 Oct 2012 13:47:24 -0700 Subject: Finish de-exporting std. Part of #3583. --- src/libstd/serialization.rs | 76 ++++++++++++++++----------------- src/libstd/std.rc | 102 ++++++++++++++++++-------------------------- 2 files changed, 80 insertions(+), 98 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/serialization.rs b/src/libstd/serialization.rs index e9067bc6404..502dba0be05 100644 --- a/src/libstd/serialization.rs +++ b/src/libstd/serialization.rs @@ -4,7 +4,7 @@ Core serialization interfaces. */ -trait Serializer { +pub trait Serializer { // Primitive types: fn emit_nil(); fn emit_uint(v: uint); @@ -37,7 +37,7 @@ trait Serializer { fn emit_tup_elt(idx: uint, f: fn()); } -trait Deserializer { +pub trait Deserializer { // Primitive types: fn read_nil() -> (); @@ -81,7 +81,7 @@ trait Deserializer { // // In some cases, these should eventually be coded as traits. -fn emit_from_vec(&&s: S, &&v: ~[T], f: fn(&&x: T)) { +pub fn emit_from_vec(&&s: S, &&v: ~[T], f: fn(&&x: T)) { do s.emit_vec(vec::len(v)) { for vec::eachi(v) |i,e| { do s.emit_vec_elt(i) { @@ -91,7 +91,7 @@ fn emit_from_vec(&&s: S, &&v: ~[T], f: fn(&&x: T)) { } } -fn read_to_vec(&&d: D, f: fn() -> T) -> ~[T] { +pub fn read_to_vec(&&d: D, f: fn() -> T) -> ~[T] { do d.read_vec |len| { do vec::from_fn(len) |i| { d.read_vec_elt(i, || f()) @@ -99,7 +99,7 @@ fn read_to_vec(&&d: D, f: fn() -> T) -> ~[T] { } } -trait SerializerHelpers { +pub trait SerializerHelpers { fn emit_from_vec(&&v: ~[T], f: fn(&&x: T)); } @@ -109,7 +109,7 @@ impl S: SerializerHelpers { } } -trait DeserializerHelpers { +pub trait DeserializerHelpers { fn read_to_vec(f: fn() -> T) -> ~[T]; } @@ -119,127 +119,127 @@ impl D: DeserializerHelpers { } } -fn serialize_uint(&&s: S, v: uint) { +pub fn serialize_uint(&&s: S, v: uint) { s.emit_uint(v); } -fn deserialize_uint(&&d: D) -> uint { +pub fn deserialize_uint(&&d: D) -> uint { d.read_uint() } -fn serialize_u8(&&s: S, v: u8) { +pub fn serialize_u8(&&s: S, v: u8) { s.emit_u8(v); } -fn deserialize_u8(&&d: D) -> u8 { +pub fn deserialize_u8(&&d: D) -> u8 { d.read_u8() } -fn serialize_u16(&&s: S, v: u16) { +pub fn serialize_u16(&&s: S, v: u16) { s.emit_u16(v); } -fn deserialize_u16(&&d: D) -> u16 { +pub fn deserialize_u16(&&d: D) -> u16 { d.read_u16() } -fn serialize_u32(&&s: S, v: u32) { +pub fn serialize_u32(&&s: S, v: u32) { s.emit_u32(v); } -fn deserialize_u32(&&d: D) -> u32 { +pub fn deserialize_u32(&&d: D) -> u32 { d.read_u32() } -fn serialize_u64(&&s: S, v: u64) { +pub fn serialize_u64(&&s: S, v: u64) { s.emit_u64(v); } -fn deserialize_u64(&&d: D) -> u64 { +pub fn deserialize_u64(&&d: D) -> u64 { d.read_u64() } -fn serialize_int(&&s: S, v: int) { +pub fn serialize_int(&&s: S, v: int) { s.emit_int(v); } -fn deserialize_int(&&d: D) -> int { +pub fn deserialize_int(&&d: D) -> int { d.read_int() } -fn serialize_i8(&&s: S, v: i8) { +pub fn serialize_i8(&&s: S, v: i8) { s.emit_i8(v); } -fn deserialize_i8(&&d: D) -> i8 { +pub fn deserialize_i8(&&d: D) -> i8 { d.read_i8() } -fn serialize_i16(&&s: S, v: i16) { +pub fn serialize_i16(&&s: S, v: i16) { s.emit_i16(v); } -fn deserialize_i16(&&d: D) -> i16 { +pub fn deserialize_i16(&&d: D) -> i16 { d.read_i16() } -fn serialize_i32(&&s: S, v: i32) { +pub fn serialize_i32(&&s: S, v: i32) { s.emit_i32(v); } -fn deserialize_i32(&&d: D) -> i32 { +pub fn deserialize_i32(&&d: D) -> i32 { d.read_i32() } -fn serialize_i64(&&s: S, v: i64) { +pub fn serialize_i64(&&s: S, v: i64) { s.emit_i64(v); } -fn deserialize_i64(&&d: D) -> i64 { +pub fn deserialize_i64(&&d: D) -> i64 { d.read_i64() } -fn serialize_str(&&s: S, v: &str) { +pub fn serialize_str(&&s: S, v: &str) { s.emit_str(v); } -fn deserialize_str(&&d: D) -> ~str { +pub fn deserialize_str(&&d: D) -> ~str { d.read_str() } -fn serialize_float(&&s: S, v: float) { +pub fn serialize_float(&&s: S, v: float) { s.emit_float(v); } -fn deserialize_float(&&d: D) -> float { +pub fn deserialize_float(&&d: D) -> float { d.read_float() } -fn serialize_f32(&&s: S, v: f32) { +pub fn serialize_f32(&&s: S, v: f32) { s.emit_f32(v); } -fn deserialize_f32(&&d: D) -> f32 { +pub fn deserialize_f32(&&d: D) -> f32 { d.read_f32() } -fn serialize_f64(&&s: S, v: f64) { +pub fn serialize_f64(&&s: S, v: f64) { s.emit_f64(v); } -fn deserialize_f64(&&d: D) -> f64 { +pub fn deserialize_f64(&&d: D) -> f64 { d.read_f64() } -fn serialize_bool(&&s: S, v: bool) { +pub fn serialize_bool(&&s: S, v: bool) { s.emit_bool(v); } -fn deserialize_bool(&&d: D) -> bool { +pub fn deserialize_bool(&&d: D) -> bool { d.read_bool() } -fn serialize_Option(&&s: S, &&v: Option, st: fn(&&x: T)) { +pub fn serialize_Option(&&s: S, &&v: Option, st: fn(&&x: T)) { do s.emit_enum(~"option") { match v { None => do s.emit_enum_variant(~"none", 0u, 0u) { @@ -254,7 +254,7 @@ fn serialize_Option(&&s: S, &&v: Option, st: fn(&&x: T)) { } } -fn deserialize_Option(&&d: D, st: fn() -> T) +pub fn deserialize_Option(&&d: D, st: fn() -> T) -> Option { do d.read_enum(~"option") { do d.read_enum_variant |i| { diff --git a/src/libstd/std.rc b/src/libstd/std.rc index 6a5658d24eb..7622f1b8de6 100644 --- a/src/libstd/std.rc +++ b/src/libstd/std.rc @@ -18,8 +18,6 @@ not required in or otherwise suitable for the core library. #[no_core]; -#[legacy_exports]; - #[allow(vecs_implicitly_copyable)]; #[deny(non_camel_case_types)]; #[forbid(deprecated_pattern)]; @@ -27,77 +25,62 @@ not required in or otherwise suitable for the core library. extern mod core(vers = "0.4"); use core::*; -export net, net_tcp, net_ip, net_url; -export uv, uv_ll, uv_iotask, uv_global_loop; -export c_vec, timer; -export sync, arc, comm; -export bitv, deque, fun_treemap, list, map; -export smallintmap, sort, treemap; -export rope, arena, par; -export ebml, ebml2; -export dbg, getopts, json, rand, sha1, term, time; -export prettyprint, prettyprint2; -export test, tempfile, serialization, serialization2; -export cmp; -export base64; -export cell; - // General io and system-services modules -mod net; -mod net_ip; -mod net_tcp; -mod net_url; +pub mod net; +pub mod net_ip; +pub mod net_tcp; +pub mod net_url; // libuv modules -mod uv; -mod uv_ll; -mod uv_iotask; -mod uv_global_loop; +pub mod uv; +pub mod uv_ll; +pub mod uv_iotask; +pub mod uv_global_loop; // Utility modules -mod c_vec; -mod timer; -mod cell; +pub mod c_vec; +pub mod timer; +pub mod cell; // Concurrency -mod sync; -mod arc; -mod comm; +pub mod sync; +pub mod arc; +pub mod comm; // Collections -mod bitv; -mod deque; -mod fun_treemap; -mod list; -mod map; -mod rope; -mod smallintmap; -mod sort; -mod treemap; +pub mod bitv; +pub mod deque; +pub mod fun_treemap; +pub mod list; +pub mod map; +pub mod rope; +pub mod smallintmap; +pub mod sort; +pub mod treemap; // And ... other stuff -mod ebml; -mod ebml2; -mod dbg; -mod getopts; -mod json; -mod sha1; -mod md4; -mod tempfile; -mod term; -mod time; -mod prettyprint; -mod prettyprint2; -mod arena; -mod par; -mod cmp; -mod base64; +pub mod ebml; +pub mod ebml2; +pub mod dbg; +pub mod getopts; +pub mod json; +pub mod sha1; +pub mod md4; +pub mod tempfile; +pub mod term; +pub mod time; +pub mod prettyprint; +pub mod prettyprint2; +pub mod arena; +pub mod par; +pub mod cmp; +pub mod base64; #[cfg(unicode)] mod unicode; @@ -105,10 +88,9 @@ mod unicode; // Compiler support modules -mod test; -#[legacy_exports] -mod serialization; -mod serialization2; +pub mod test; +pub mod serialization; +pub mod serialization2; // Local Variables: // mode: rust; -- cgit 1.4.1-3-g733a5 From f05bf26f859f9e373d5044048b8c937023497690 Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Thu, 4 Oct 2012 14:08:59 -0700 Subject: Fix long line. --- src/libstd/serialization.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/libstd') diff --git a/src/libstd/serialization.rs b/src/libstd/serialization.rs index 502dba0be05..269027a80e5 100644 --- a/src/libstd/serialization.rs +++ b/src/libstd/serialization.rs @@ -239,7 +239,8 @@ pub fn deserialize_bool(&&d: D) -> bool { d.read_bool() } -pub fn serialize_Option(&&s: S, &&v: Option, st: fn(&&x: T)) { +pub fn serialize_Option(&&s: S, &&v: Option, + st: fn(&&x: T)) { do s.emit_enum(~"option") { match v { None => do s.emit_enum_variant(~"none", 0u, 0u) { -- cgit 1.4.1-3-g733a5 From fe12da0864ade257eb9b7cffbb96e5cb24af325e Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Wed, 3 Oct 2012 14:38:01 -0700 Subject: De-mode comm::Chan --- doc/rust.md | 6 ++-- src/libcore/comm.rs | 44 +++++++++++++------------- src/libcore/option.rs | 4 +-- src/libcore/os.rs | 6 ++-- src/libcore/private.rs | 16 +++++----- src/libcore/run.rs | 2 +- src/libcore/task.rs | 42 ++++++++++++------------ src/libcore/task/spawn.rs | 2 +- src/libstd/net_tcp.rs | 30 +++++++++--------- src/libstd/sync.rs | 4 +-- src/libstd/test.rs | 10 +++--- src/libstd/timer.rs | 10 +++--- src/libstd/uv_global_loop.rs | 10 +++--- src/libstd/uv_iotask.rs | 8 ++--- src/libstd/uv_ll.rs | 6 ++-- src/rustc/driver/rustc.rs | 2 +- src/rustdoc/astsrv.rs | 2 +- src/rustdoc/markdown_writer.rs | 8 ++--- src/test/auxiliary/cci_capture_clause.rs | 2 +- src/test/bench/msgsend-ring.rs | 6 ++-- src/test/bench/shootout-chameneos-redux.rs | 4 +-- src/test/bench/shootout-k-nucleotide.rs | 2 +- src/test/bench/shootout-mandelbrot.rs | 4 +-- src/test/bench/shootout-threadring.rs | 2 +- src/test/bench/task-perf-linked-failure.rs | 2 +- src/test/bench/task-perf-one-million.rs | 4 +-- src/test/bench/task-perf-word-count-generic.rs | 6 ++-- src/test/compile-fail/issue-3096-2.rs | 2 +- src/test/compile-fail/non-copyable-void.rs | 2 +- src/test/compile-fail/unsendable-class.rs | 2 +- src/test/run-fail/port-type.rs | 2 +- src/test/run-pass/basic-1.rs | 2 +- src/test/run-pass/basic-2.rs | 2 +- src/test/run-pass/basic.rs | 2 +- src/test/run-pass/capture_nil.rs | 2 +- src/test/run-pass/chan-leak.rs | 6 ++-- src/test/run-pass/comm.rs | 2 +- src/test/run-pass/decl-with-recv.rs | 2 +- src/test/run-pass/hashmap-memory.rs | 4 +-- src/test/run-pass/issue-507.rs | 2 +- src/test/run-pass/issue-687.rs | 6 ++-- src/test/run-pass/issue-783.rs | 4 +-- src/test/run-pass/ivec-tag.rs | 2 +- src/test/run-pass/lazychan.rs | 2 +- src/test/run-pass/many.rs | 4 +-- src/test/run-pass/rt-circular-buffer.rs | 12 +++---- src/test/run-pass/rt-sched-1.rs | 2 +- src/test/run-pass/send-iloop.rs | 2 +- src/test/run-pass/send-resource.rs | 4 +-- src/test/run-pass/send-type-inference.rs | 2 +- src/test/run-pass/sendable-class.rs | 2 +- src/test/run-pass/spawn-types.rs | 2 +- src/test/run-pass/task-comm-chan-cleanup.rs | 2 +- src/test/run-pass/task-comm-chan-cleanup2.rs | 2 +- src/test/run-pass/task-comm-chan-cleanup3.rs | 2 +- src/test/run-pass/task-comm-chan-cleanup4.rs | 2 +- src/test/run-pass/task-comm-chan-nil.rs | 2 +- src/test/run-pass/task-comm.rs | 6 ++-- src/test/run-pass/task-killjoin-rsrc.rs | 2 +- src/test/run-pass/task-spawn-move-and-copy.rs | 2 +- src/test/run-pass/unique-send-2.rs | 2 +- src/test/run-pass/unique-send.rs | 2 +- src/test/run-pass/unwind-resource.rs | 2 +- 63 files changed, 173 insertions(+), 173 deletions(-) (limited to 'src/libstd') diff --git a/doc/rust.md b/doc/rust.md index 5fd9622046a..62b3b4409ab 100644 --- a/doc/rust.md +++ b/doc/rust.md @@ -2952,7 +2952,7 @@ An example of a `spawn` call: ~~~~ let po = comm::Port(); -let ch = comm::Chan(po); +let ch = comm::Chan(&po); do task::spawn { // let task run, do other things @@ -2974,7 +2974,7 @@ An example of a send: ~~~~ let po = comm::Port(); -let ch = comm::Chan(po); +let ch = comm::Chan(&po); comm::send(ch, ~"hello, world"); ~~~~ @@ -2990,7 +2990,7 @@ An example of a *receive*: ~~~~~~~~ # let po = comm::Port(); -# let ch = comm::Chan(po); +# let ch = comm::Chan(&po); # comm::send(ch, ~""); let s = comm::recv(po); ~~~~~~~~ diff --git a/src/libcore/comm.rs b/src/libcore/comm.rs index 64c38d13e49..c9cd1a21b45 100644 --- a/src/libcore/comm.rs +++ b/src/libcore/comm.rs @@ -32,8 +32,8 @@ will once again be the preferred module for intertask communication. */ -// NB: transitionary, de-mode-ing -// tjc: re-forbid deprecated modes after snapshot +// NB: transitionary, de-mode-ing. +#[forbid(deprecated_mode)]; #[forbid(deprecated_pattern)]; use either::Either; @@ -74,7 +74,7 @@ pub fn Port() -> Port { impl Port { - fn chan() -> Chan { Chan(self) } + fn chan() -> Chan { Chan(&self) } fn send(v: T) { self.chan().send(move v) } fn recv() -> T { recv(self) } fn peek() -> bool { peek(self) } @@ -166,7 +166,7 @@ fn as_raw_port(ch: comm::Chan, f: fn(*rust_port) -> U) -> U { * Constructs a channel. The channel is bound to the port used to * construct it. */ -pub fn Chan(&&p: Port) -> Chan { +pub fn Chan(p: &Port) -> Chan { Chan_(rustrt::get_port_id((**p).po)) } @@ -304,19 +304,19 @@ extern mod rusti { #[test] -fn create_port_and_chan() { let p = Port::(); Chan(p); } +fn create_port_and_chan() { let p = Port::(); Chan(&p); } #[test] fn send_int() { let p = Port::(); - let c = Chan(p); + let c = Chan(&p); send(c, 22); } #[test] fn send_recv_fn() { let p = Port::(); - let c = Chan::(p); + let c = Chan::(&p); send(c, 42); assert (recv(p) == 42); } @@ -324,7 +324,7 @@ fn send_recv_fn() { #[test] fn send_recv_fn_infer() { let p = Port(); - let c = Chan(p); + let c = Chan(&p); send(c, 42); assert (recv(p) == 42); } @@ -332,23 +332,23 @@ fn send_recv_fn_infer() { #[test] fn chan_chan_infer() { let p = Port(), p2 = Port::(); - let c = Chan(p); - send(c, Chan(p2)); + let c = Chan(&p); + send(c, Chan(&p2)); recv(p); } #[test] fn chan_chan() { let p = Port::>(), p2 = Port::(); - let c = Chan(p); - send(c, Chan(p2)); + let c = Chan(&p); + send(c, Chan(&p2)); recv(p); } #[test] fn test_peek() { let po = Port(); - let ch = Chan(po); + let ch = Chan(&po); assert !peek(po); send(ch, ()); assert peek(po); @@ -360,8 +360,8 @@ fn test_peek() { fn test_select2_available() { let po_a = Port(); let po_b = Port(); - let ch_a = Chan(po_a); - let ch_b = Chan(po_b); + let ch_a = Chan(&po_a); + let ch_b = Chan(&po_b); send(ch_a, ~"a"); @@ -376,8 +376,8 @@ fn test_select2_available() { fn test_select2_rendezvous() { let po_a = Port(); let po_b = Port(); - let ch_a = Chan(po_a); - let ch_b = Chan(po_b); + let ch_a = Chan(&po_a); + let ch_b = Chan(&po_b); for iter::repeat(10) { do task::spawn { @@ -400,8 +400,8 @@ fn test_select2_rendezvous() { fn test_select2_stress() { let po_a = Port(); let po_b = Port(); - let ch_a = Chan(po_a); - let ch_b = Chan(po_b); + let ch_a = Chan(&po_a); + let ch_b = Chan(&po_b); let msgs = 100; let times = 4u; @@ -436,7 +436,7 @@ fn test_select2_stress() { #[test] fn test_recv_chan() { let po = Port(); - let ch = Chan(po); + let ch = Chan(&po); send(ch, ~"flower"); assert recv_chan(ch) == ~"flower"; } @@ -445,7 +445,7 @@ fn test_recv_chan() { #[should_fail] #[ignore(cfg(windows))] fn test_recv_chan_dead() { - let ch = Chan(Port()); + let ch = Chan(&Port()); send(ch, ~"flower"); recv_chan(ch); } @@ -454,7 +454,7 @@ fn test_recv_chan_dead() { #[ignore(cfg(windows))] fn test_recv_chan_wrong_task() { let po = Port(); - let ch = Chan(po); + let ch = Chan(&po); send(ch, ~"flower"); assert result::is_err(&task::try(|| recv_chan(ch) diff --git a/src/libcore/option.rs b/src/libcore/option.rs index 1cdd4511e29..c222592a928 100644 --- a/src/libcore/option.rs +++ b/src/libcore/option.rs @@ -326,10 +326,10 @@ impl Option : Eq { #[test] fn test_unwrap_ptr() { let x = ~0; - let addr_x = ptr::p2::addr_of(&(*x)); + let addr_x = ptr::addr_of(&(*x)); let opt = Some(x); let y = unwrap(opt); - let addr_y = ptr::p2::addr_of(&(*y)); + let addr_y = ptr::addr_of(&(*y)); assert addr_x == addr_y; } diff --git a/src/libcore/os.rs b/src/libcore/os.rs index 68571da3a1e..1a9bd03539e 100644 --- a/src/libcore/os.rs +++ b/src/libcore/os.rs @@ -132,7 +132,7 @@ mod global_env { let env_ch = get_global_env_chan(); let po = comm::Port(); comm::send(env_ch, MsgGetEnv(str::from_slice(n), - comm::Chan(po))); + comm::Chan(&po))); comm::recv(po) } @@ -141,14 +141,14 @@ mod global_env { let po = comm::Port(); comm::send(env_ch, MsgSetEnv(str::from_slice(n), str::from_slice(v), - comm::Chan(po))); + comm::Chan(&po))); comm::recv(po) } pub fn env() -> ~[(~str,~str)] { let env_ch = get_global_env_chan(); let po = comm::Port(); - comm::send(env_ch, MsgEnv(comm::Chan(po))); + comm::send(env_ch, MsgEnv(comm::Chan(&po))); comm::recv(po) } diff --git a/src/libcore/private.rs b/src/libcore/private.rs index c1b2b32edaf..395e63ad30f 100644 --- a/src/libcore/private.rs +++ b/src/libcore/private.rs @@ -63,7 +63,7 @@ pub unsafe fn chan_from_global_ptr( let (setup_po, setup_ch) = do task_fn().spawn_conversation |move f, setup_po, setup_ch| { let po = comm::Port::(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); comm::send(setup_ch, ch); // Wait to hear if we are the official instance of @@ -109,7 +109,7 @@ pub fn test_from_global_chan1() { // The global channel let globchan = 0; - let globchanp = ptr::p2::addr_of(&globchan); + let globchanp = ptr::addr_of(&globchan); // Create the global channel, attached to a new task let ch = unsafe { @@ -122,7 +122,7 @@ pub fn test_from_global_chan1() { }; // Talk to it let po = comm::Port(); - comm::send(ch, comm::Chan(po)); + comm::send(ch, comm::Chan(&po)); assert comm::recv(po) == true; // This one just reuses the previous channel @@ -135,7 +135,7 @@ pub fn test_from_global_chan1() { // Talk to the original global task let po = comm::Port(); - comm::send(ch, comm::Chan(po)); + comm::send(ch, comm::Chan(&po)); assert comm::recv(po) == true; } @@ -145,10 +145,10 @@ pub fn test_from_global_chan2() { for iter::repeat(100) { // The global channel let globchan = 0; - let globchanp = ptr::p2::addr_of(&globchan); + let globchanp = ptr::addr_of(&globchan); let resultpo = comm::Port(); - let resultch = comm::Chan(resultpo); + let resultch = comm::Chan(&resultpo); // Spawn a bunch of tasks that all want to compete to // create the global channel @@ -165,7 +165,7 @@ pub fn test_from_global_chan2() { } }; let po = comm::Port(); - comm::send(ch, comm::Chan(po)); + comm::send(ch, comm::Chan(&po)); // We are The winner if our version of the // task was installed let winner = comm::recv(po); @@ -203,7 +203,7 @@ pub fn test_from_global_chan2() { */ pub unsafe fn weaken_task(f: fn(comm::Port<()>)) { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); unsafe { rustrt::rust_task_weaken(cast::reinterpret_cast(&ch)); } diff --git a/src/libcore/run.rs b/src/libcore/run.rs index f3e98f6ba82..7ebca94f357 100644 --- a/src/libcore/run.rs +++ b/src/libcore/run.rs @@ -296,7 +296,7 @@ pub fn program_output(prog: &str, args: &[~str]) -> // or the other. FIXME (#2625): Surely there's a much more // clever way to do this. let p = comm::Port(); - let ch = comm::Chan(p); + let ch = comm::Chan(&p); do task::spawn_sched(task::SingleThreaded) { let errput = readclose(pipe_err.in); comm::send(ch, (2, move errput)); diff --git a/src/libcore/task.rs b/src/libcore/task.rs index 5ca35a7f562..efe6948ecef 100644 --- a/src/libcore/task.rs +++ b/src/libcore/task.rs @@ -479,10 +479,10 @@ impl TaskBuilder { */ fn spawn_listener(+f: fn~(comm::Port)) -> comm::Chan { let setup_po = comm::Port(); - let setup_ch = comm::Chan(setup_po); + let setup_ch = comm::Chan(&setup_po); do self.spawn |move f| { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); comm::send(setup_ch, ch); f(move po); } @@ -496,7 +496,7 @@ impl TaskBuilder { (+f: fn~(comm::Port, comm::Chan)) -> (comm::Port, comm::Chan) { let from_child = comm::Port(); - let to_parent = comm::Chan(from_child); + let to_parent = comm::Chan(&from_child); let to_child = do self.spawn_listener |move f, from_parent| { f(from_parent, to_parent) }; @@ -518,7 +518,7 @@ impl TaskBuilder { */ fn try(+f: fn~() -> T) -> Result { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); let mut result = None; let fr_task_builder = self.future_result(|+r| { @@ -772,7 +772,7 @@ fn test_cant_dup_task_builder() { #[test] #[ignore(cfg(windows))] fn test_spawn_unlinked_unsup_no_fail_down() { // grandchild sends on a port let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); do spawn_unlinked { do spawn_unlinked { // Give middle task a chance to fail-but-not-kill-us. @@ -802,7 +802,7 @@ fn test_spawn_unlinked_sup_fail_down() { #[test] #[should_fail] #[ignore(cfg(windows))] fn test_spawn_linked_sup_fail_up() { // child fails; parent fails let po = comm::Port::<()>(); - let _ch = comm::Chan(po); + let _ch = comm::Chan(&po); // Unidirectional "parenting" shouldn't override bidirectional linked. // We have to cheat with opts - the interface doesn't support them because // they don't make sense (redundant with task().supervised()). @@ -845,7 +845,7 @@ fn test_spawn_linked_sup_fail_down() { // parent fails; child fails #[test] #[should_fail] #[ignore(cfg(windows))] fn test_spawn_linked_unsup_fail_up() { // child fails; parent fails let po = comm::Port::<()>(); - let _ch = comm::Chan(po); + let _ch = comm::Chan(&po); // Default options are to spawn linked & unsupervised. do spawn { fail; } comm::recv(po); // We should get punted awake @@ -917,7 +917,7 @@ fn test_spawn_linked_sup_propagate_sibling() { #[test] fn test_run_basic() { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); do task().spawn { comm::send(ch, ()); } @@ -927,7 +927,7 @@ fn test_run_basic() { #[test] fn test_add_wrapper() { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); let b0 = task(); let b1 = do b0.add_wrapper |body| { fn~() { @@ -961,7 +961,7 @@ fn test_back_to_the_future_result() { #[test] fn test_spawn_listiner_bidi() { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); let ch = do spawn_listener |po| { // Now the child has a port called 'po' to read from and // an environment-captured channel called 'ch'. @@ -1017,7 +1017,7 @@ fn test_spawn_sched_no_threads() { #[test] fn test_spawn_sched() { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); fn f(i: int, ch: comm::Chan<()>) { let parent_sched_id = rt::rust_get_sched_id(); @@ -1041,7 +1041,7 @@ fn test_spawn_sched() { #[test] fn test_spawn_sched_childs_on_same_sched() { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); do spawn_sched(SingleThreaded) { let parent_sched_id = rt::rust_get_sched_id(); @@ -1075,9 +1075,9 @@ fn test_spawn_sched_blocking() { for iter::repeat(20u) { let start_po = comm::Port(); - let start_ch = comm::Chan(start_po); + let start_ch = comm::Chan(&start_po); let fin_po = comm::Port(); - let fin_ch = comm::Chan(fin_po); + let fin_ch = comm::Chan(&fin_po); let lock = testrt::rust_dbg_lock_create(); @@ -1105,12 +1105,12 @@ fn test_spawn_sched_blocking() { } let setup_po = comm::Port(); - let setup_ch = comm::Chan(setup_po); + let setup_ch = comm::Chan(&setup_po); let parent_po = comm::Port(); - let parent_ch = comm::Chan(parent_po); + let parent_ch = comm::Chan(&parent_po); do spawn { let child_po = comm::Port(); - comm::send(setup_ch, comm::Chan(child_po)); + comm::send(setup_ch, comm::Chan(&child_po)); pingpong(child_po, parent_ch); }; @@ -1128,13 +1128,13 @@ fn test_spawn_sched_blocking() { #[cfg(test)] fn avoid_copying_the_body(spawnfn: fn(+v: fn~())) { let p = comm::Port::(); - let ch = comm::Chan(p); + let ch = comm::Chan(&p); let x = ~1; - let x_in_parent = ptr::p2::addr_of(&(*x)) as uint; + let x_in_parent = ptr::addr_of(&(*x)) as uint; do spawnfn { - let x_in_child = ptr::p2::addr_of(&(*x)) as uint; + let x_in_child = ptr::addr_of(&(*x)) as uint; comm::send(ch, x_in_child); } @@ -1195,7 +1195,7 @@ fn test_avoid_copying_the_body_unlinked() { #[test] fn test_platform_thread() { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); do task().sched_mode(PlatformThread).spawn { comm::send(ch, ()); } diff --git a/src/libcore/task/spawn.rs b/src/libcore/task/spawn.rs index ff07150cfa2..2033db0d58d 100644 --- a/src/libcore/task/spawn.rs +++ b/src/libcore/task/spawn.rs @@ -636,7 +636,7 @@ pub fn spawn_raw(opts: TaskOpts, +f: fn~()) { #[test] fn test_spawn_raw_simple() { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); do spawn_raw(default_task_opts()) { comm::send(ch, ()); } diff --git a/src/libstd/net_tcp.rs b/src/libstd/net_tcp.rs index 546231da633..8c95410d4e8 100644 --- a/src/libstd/net_tcp.rs +++ b/src/libstd/net_tcp.rs @@ -121,8 +121,8 @@ pub fn connect(input_ip: ip::IpAddr, port: uint, let result_po = core::comm::Port::(); let closed_signal_po = core::comm::Port::<()>(); let conn_data = { - result_ch: core::comm::Chan(result_po), - closed_signal_ch: core::comm::Chan(closed_signal_po) + result_ch: core::comm::Chan(&result_po), + closed_signal_ch: core::comm::Chan(&closed_signal_po) }; let conn_data_ptr = ptr::addr_of(&conn_data); let reader_po = core::comm::Port::>(); @@ -130,7 +130,7 @@ pub fn connect(input_ip: ip::IpAddr, port: uint, *(stream_handle_ptr as *mut uv::ll::uv_tcp_t) = uv::ll::tcp_t(); let socket_data = @{ reader_po: reader_po, - reader_ch: core::comm::Chan(reader_po), + reader_ch: core::comm::Chan(&reader_po), stream_handle_ptr: stream_handle_ptr, connect_req: uv::ll::connect_t(), write_req: uv::ll::write_t(), @@ -471,7 +471,7 @@ pub fn accept(new_conn: TcpNewConnection) *(stream_handle_ptr as *mut uv::ll::uv_tcp_t) = uv::ll::tcp_t(); let client_socket_data = @{ reader_po: reader_po, - reader_ch: core::comm::Chan(reader_po), + reader_ch: core::comm::Chan(&reader_po), stream_handle_ptr : stream_handle_ptr, connect_req : uv::ll::connect_t(), write_req : uv::ll::write_t(), @@ -482,7 +482,7 @@ pub fn accept(new_conn: TcpNewConnection) (*client_socket_data_ptr).stream_handle_ptr; let result_po = core::comm::Port::>(); - let result_ch = core::comm::Chan(result_po); + let result_ch = core::comm::Chan(&result_po); // UNSAFE LIBUV INTERACTION BEGIN // .. normally this happens within the context of @@ -580,12 +580,12 @@ fn listen_common(host_ip: ip::IpAddr, port: uint, backlog: uint, -> result::Result<(), TcpListenErrData> unsafe { let stream_closed_po = core::comm::Port::<()>(); let kill_po = core::comm::Port::>(); - let kill_ch = core::comm::Chan(kill_po); + let kill_ch = core::comm::Chan(&kill_po); let server_stream = uv::ll::tcp_t(); let server_stream_ptr = ptr::addr_of(&server_stream); let server_data = { server_stream_ptr: server_stream_ptr, - stream_closed_ch: core::comm::Chan(stream_closed_po), + stream_closed_ch: core::comm::Chan(&stream_closed_po), kill_ch: kill_ch, on_connect_cb: move on_connect_cb, iotask: iotask, @@ -832,7 +832,7 @@ impl TcpSocketBuf: io::Writer { fn tear_down_socket_data(socket_data: @TcpSocketData) unsafe { let closed_po = core::comm::Port::<()>(); - let closed_ch = core::comm::Chan(closed_po); + let closed_ch = core::comm::Chan(&closed_po); let close_data = { closed_ch: closed_ch }; @@ -895,7 +895,7 @@ fn read_stop_common_impl(socket_data: *TcpSocketData) -> result::Result<(), TcpErrData> unsafe { let stream_handle_ptr = (*socket_data).stream_handle_ptr; let stop_po = core::comm::Port::>(); - let stop_ch = core::comm::Chan(stop_po); + let stop_ch = core::comm::Chan(&stop_po); do iotask::interact((*socket_data).iotask) |loop_ptr| unsafe { log(debug, ~"in interact cb for tcp::read_stop"); match uv::ll::read_stop(stream_handle_ptr as *uv::ll::uv_stream_t) { @@ -922,7 +922,7 @@ fn read_start_common_impl(socket_data: *TcpSocketData) result::Result<~[u8], TcpErrData>>, TcpErrData> unsafe { let stream_handle_ptr = (*socket_data).stream_handle_ptr; let start_po = core::comm::Port::>(); - let start_ch = core::comm::Chan(start_po); + let start_ch = core::comm::Chan(&start_po); log(debug, ~"in tcp::read_start before interact loop"); do iotask::interact((*socket_data).iotask) |loop_ptr| unsafe { log(debug, fmt!("in tcp::read_start interact cb %?", loop_ptr)); @@ -961,7 +961,7 @@ fn write_common_impl(socket_data_ptr: *TcpSocketData, let write_buf_vec_ptr = ptr::addr_of(&write_buf_vec); let result_po = core::comm::Port::(); let write_data = { - result_ch: core::comm::Chan(result_po) + result_ch: core::comm::Chan(&result_po) }; let write_data_ptr = ptr::addr_of(&write_data); do iotask::interact((*socket_data_ptr).iotask) |loop_ptr| unsafe { @@ -1277,10 +1277,10 @@ mod test { let expected_resp = ~"pong"; let server_result_po = core::comm::Port::<~str>(); - let server_result_ch = core::comm::Chan(server_result_po); + let server_result_ch = core::comm::Chan(&server_result_po); let cont_po = core::comm::Port::<()>(); - let cont_ch = core::comm::Chan(cont_po); + let cont_ch = core::comm::Chan(&cont_po); // server do task::spawn_sched(task::ManualThreads(1u)) { let actual_req = do comm::listen |server_ch| { @@ -1343,10 +1343,10 @@ mod test { let expected_resp = ~"pong"; let server_result_po = core::comm::Port::<~str>(); - let server_result_ch = core::comm::Chan(server_result_po); + let server_result_ch = core::comm::Chan(&server_result_po); let cont_po = core::comm::Port::<()>(); - let cont_ch = core::comm::Chan(cont_po); + let cont_ch = core::comm::Chan(&cont_po); // server do task::spawn_sched(task::ManualThreads(1u)) { let actual_req = do comm::listen |server_ch| { diff --git a/src/libstd/sync.rs b/src/libstd/sync.rs index f66134d3892..88869773e5d 100644 --- a/src/libstd/sync.rs +++ b/src/libstd/sync.rs @@ -773,7 +773,7 @@ mod tests { let m = ~Mutex(); let m2 = ~m.clone(); let mut sharedstate = ~0; - let ptr = ptr::p2::addr_of(&(*sharedstate)); + let ptr = ptr::addr_of(&(*sharedstate)); do task::spawn { let sharedstate: &mut int = unsafe { cast::reinterpret_cast(&ptr) }; @@ -1045,7 +1045,7 @@ mod tests { let (c,p) = pipes::stream(); let x2 = ~x.clone(); let mut sharedstate = ~0; - let ptr = ptr::p2::addr_of(&(*sharedstate)); + let ptr = ptr::addr_of(&(*sharedstate)); do task::spawn { let sharedstate: &mut int = unsafe { cast::reinterpret_cast(&ptr) }; diff --git a/src/libstd/test.rs b/src/libstd/test.rs index c5d9dd343fa..2eac3729c22 100644 --- a/src/libstd/test.rs +++ b/src/libstd/test.rs @@ -286,7 +286,7 @@ fn run_tests(opts: &TestOpts, tests: &[TestDesc], let mut done_idx = 0; let p = core::comm::Port(); - let ch = core::comm::Chan(p); + let ch = core::comm::Chan(&p); while done_idx < total { while wait_idx < concurrency && run_idx < total { @@ -421,7 +421,7 @@ mod tests { should_fail: false }; let p = core::comm::Port(); - let ch = core::comm::Chan(p); + let ch = core::comm::Chan(&p); run_test(desc, ch); let (_, res) = core::comm::recv(p); assert res != TrOk; @@ -437,7 +437,7 @@ mod tests { should_fail: false }; let p = core::comm::Port(); - let ch = core::comm::Chan(p); + let ch = core::comm::Chan(&p); run_test(desc, ch); let (_, res) = core::comm::recv(p); assert res == TrIgnored; @@ -454,7 +454,7 @@ mod tests { should_fail: true }; let p = core::comm::Port(); - let ch = core::comm::Chan(p); + let ch = core::comm::Chan(&p); run_test(desc, ch); let (_, res) = core::comm::recv(p); assert res == TrOk; @@ -470,7 +470,7 @@ mod tests { should_fail: true }; let p = core::comm::Port(); - let ch = core::comm::Chan(p); + let ch = core::comm::Chan(&p); run_test(desc, ch); let (_, res) = core::comm::recv(p); assert res == TrFailed; diff --git a/src/libstd/timer.rs b/src/libstd/timer.rs index 2aca87b942e..821015edd1a 100644 --- a/src/libstd/timer.rs +++ b/src/libstd/timer.rs @@ -27,7 +27,7 @@ pub fn delayed_send(iotask: IoTask, msecs: uint, ch: comm::Chan, val: T) { unsafe { let timer_done_po = core::comm::Port::<()>(); - let timer_done_ch = core::comm::Chan(timer_done_po); + let timer_done_ch = core::comm::Chan(&timer_done_po); let timer_done_ch_ptr = ptr::addr_of(&timer_done_ch); let timer = uv::ll::timer_t(); let timer_ptr = ptr::addr_of(&timer); @@ -74,7 +74,7 @@ pub fn delayed_send(iotask: IoTask, */ pub fn sleep(iotask: IoTask, msecs: uint) { let exit_po = core::comm::Port::<()>(); - let exit_ch = core::comm::Chan(exit_po); + let exit_ch = core::comm::Chan(&exit_po); delayed_send(iotask, msecs, exit_ch, ()); core::comm::recv(exit_po); } @@ -103,7 +103,7 @@ pub fn recv_timeout(iotask: IoTask, msecs: uint, wait_po: comm::Port) -> Option { let timeout_po = comm::Port::<()>(); - let timeout_ch = comm::Chan(timeout_po); + let timeout_ch = comm::Chan(&timeout_po); delayed_send(iotask, msecs, timeout_ch, ()); // FIXME: This could be written clearer (#2618) either::either( @@ -162,7 +162,7 @@ mod test { #[test] fn test_gl_timer_sleep_stress2() { let po = core::comm::Port(); - let ch = core::comm::Chan(po); + let ch = core::comm::Chan(&po); let hl_loop = uv::global_loop::get(); let repeat = 20u; @@ -240,7 +240,7 @@ mod test { for iter::repeat(times as uint) { let expected = rand::Rng().gen_str(16u); let test_po = core::comm::Port::<~str>(); - let test_ch = core::comm::Chan(test_po); + let test_ch = core::comm::Chan(&test_po); do task::spawn() { delayed_send(hl_loop, 50u, test_ch, expected); diff --git a/src/libstd/uv_global_loop.rs b/src/libstd/uv_global_loop.rs index 869c3efa38f..79f6bafb4a4 100644 --- a/src/libstd/uv_global_loop.rs +++ b/src/libstd/uv_global_loop.rs @@ -133,12 +133,12 @@ mod test { fn impl_uv_hl_simple_timer(iotask: IoTask) unsafe { let exit_po = core::comm::Port::(); - let exit_ch = core::comm::Chan(exit_po); - let exit_ch_ptr = ptr::p2::addr_of(&exit_ch); + let exit_ch = core::comm::Chan(&exit_po); + let exit_ch_ptr = ptr::addr_of(&exit_ch); log(debug, fmt!("EXIT_CH_PTR newly created exit_ch_ptr: %?", exit_ch_ptr)); let timer_handle = ll::timer_t(); - let timer_ptr = ptr::p2::addr_of(&timer_handle); + let timer_ptr = ptr::addr_of(&timer_handle); do iotask::interact(iotask) |loop_ptr| unsafe { log(debug, ~"user code inside interact loop!!!"); let init_status = ll::timer_init(loop_ptr, timer_ptr); @@ -166,7 +166,7 @@ mod test { fn test_gl_uv_global_loop_high_level_global_timer() unsafe { let hl_loop = get_gl(); let exit_po = comm::Port::<()>(); - let exit_ch = comm::Chan(exit_po); + let exit_ch = comm::Chan(&exit_po); task::spawn_sched(task::ManualThreads(1u), || { impl_uv_hl_simple_timer(hl_loop); core::comm::send(exit_ch, ()); @@ -182,7 +182,7 @@ mod test { fn test_stress_gl_uv_global_loop_high_level_global_timer() unsafe { let hl_loop = get_gl(); let exit_po = core::comm::Port::<()>(); - let exit_ch = core::comm::Chan(exit_po); + let exit_ch = core::comm::Chan(&exit_po); let cycles = 5000u; for iter::repeat(cycles) { task::spawn_sched(task::ManualThreads(1u), || { diff --git a/src/libstd/uv_iotask.rs b/src/libstd/uv_iotask.rs index 4a4a34704be..ca4d655db59 100644 --- a/src/libstd/uv_iotask.rs +++ b/src/libstd/uv_iotask.rs @@ -184,7 +184,7 @@ mod test { let async_handle = ll::async_t(); let ah_ptr = ptr::addr_of(&async_handle); let exit_po = core::comm::Port::<()>(); - let exit_ch = core::comm::Chan(exit_po); + let exit_ch = core::comm::Chan(&exit_po); let ah_data = { iotask: iotask, exit_ch: exit_ch @@ -202,7 +202,7 @@ mod test { // high_level_loop unsafe fn spawn_test_loop(exit_ch: comm::Chan<()>) -> IoTask { let iotask_port = comm::Port::(); - let iotask_ch = comm::Chan(iotask_port); + let iotask_ch = comm::Chan(&iotask_port); do task::spawn_sched(task::ManualThreads(1u)) { run_loop(iotask_ch); exit_ch.send(()); @@ -223,7 +223,7 @@ mod test { #[test] fn test_uv_iotask_async() unsafe { let exit_po = core::comm::Port::<()>(); - let exit_ch = core::comm::Chan(exit_po); + let exit_ch = core::comm::Chan(&exit_po); let iotask = spawn_test_loop(exit_ch); // using this handle to manage the lifetime of the high_level_loop, @@ -233,7 +233,7 @@ mod test { // lives until, at least, all of the impl_uv_hl_async() runs have been // called, at least. let work_exit_po = core::comm::Port::<()>(); - let work_exit_ch = core::comm::Chan(work_exit_po); + let work_exit_ch = core::comm::Chan(&work_exit_po); for iter::repeat(7u) { do task::spawn_sched(task::ManualThreads(1u)) { impl_uv_iotask_async(iotask); diff --git a/src/libstd/uv_ll.rs b/src/libstd/uv_ll.rs index f0594475d04..f8c3882d15e 100644 --- a/src/libstd/uv_ll.rs +++ b/src/libstd/uv_ll.rs @@ -1466,12 +1466,12 @@ pub mod test { let kill_server_msg = ~"does a dog have buddha nature?"; let server_resp_msg = ~"mu!"; let client_port = core::comm::Port::<~str>(); - let client_chan = core::comm::Chan::<~str>(client_port); + let client_chan = core::comm::Chan::<~str>(&client_port); let server_port = core::comm::Port::<~str>(); - let server_chan = core::comm::Chan::<~str>(server_port); + let server_chan = core::comm::Chan::<~str>(&server_port); let continue_port = core::comm::Port::(); - let continue_chan = core::comm::Chan::(continue_port); + let continue_chan = core::comm::Chan::(&continue_port); let continue_chan_ptr = ptr::addr_of(&continue_chan); do task::spawn_sched(task::ManualThreads(1)) { diff --git a/src/rustc/driver/rustc.rs b/src/rustc/driver/rustc.rs index 5fc48e2b6a2..c2bca3fc6be 100644 --- a/src/rustc/driver/rustc.rs +++ b/src/rustc/driver/rustc.rs @@ -229,7 +229,7 @@ bug and need to present an error. */ fn monitor(+f: fn~(diagnostic::emitter)) { let p = comm::Port(); - let ch = comm::Chan(p); + let ch = comm::Chan(&p); match do task::try |move f| { diff --git a/src/rustdoc/astsrv.rs b/src/rustdoc/astsrv.rs index ab6b348c04a..2e6cbf579c8 100644 --- a/src/rustdoc/astsrv.rs +++ b/src/rustdoc/astsrv.rs @@ -93,7 +93,7 @@ fn exec( +f: fn~(ctxt: Ctxt) -> T ) -> T { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); let msg = HandleRequest(fn~(move f, ctxt: Ctxt) { comm::send(ch, f(ctxt)) }); diff --git a/src/rustdoc/markdown_writer.rs b/src/rustdoc/markdown_writer.rs index d0fe7a3840b..f505f9d0b99 100644 --- a/src/rustdoc/markdown_writer.rs +++ b/src/rustdoc/markdown_writer.rs @@ -109,14 +109,14 @@ fn pandoc_writer( os::close(pipe_in.out); let stdout_po = comm::Port(); - let stdout_ch = comm::Chan(stdout_po); + let stdout_ch = comm::Chan(&stdout_po); do task::spawn_sched(task::SingleThreaded) { comm::send(stdout_ch, readclose(pipe_out.in)); } let stdout = comm::recv(stdout_po); let stderr_po = comm::Port(); - let stderr_ch = comm::Chan(stderr_po); + let stderr_ch = comm::Chan(&stderr_po); do task::spawn_sched(task::SingleThreaded) { comm::send(stderr_ch, readclose(pipe_err.in)); } @@ -268,10 +268,10 @@ fn write_file(path: &Path, s: ~str) { fn future_writer_factory( ) -> (WriterFactory, comm::Port<(doc::Page, ~str)>) { let markdown_po = comm::Port(); - let markdown_ch = comm::Chan(markdown_po); + let markdown_ch = comm::Chan(&markdown_po); let writer_factory = fn~(page: doc::Page) -> Writer { let writer_po = comm::Port(); - let writer_ch = comm::Chan(writer_po); + let writer_ch = comm::Chan(&writer_po); do task::spawn { let (writer, future) = future_writer(); comm::send(writer_ch, writer); diff --git a/src/test/auxiliary/cci_capture_clause.rs b/src/test/auxiliary/cci_capture_clause.rs index 2d7404aa1d2..b2560585257 100644 --- a/src/test/auxiliary/cci_capture_clause.rs +++ b/src/test/auxiliary/cci_capture_clause.rs @@ -6,7 +6,7 @@ use comm::*; fn foo(x: T) -> Port { let p = Port(); - let c = Chan(p); + let c = Chan(&p); do task::spawn() |copy c, copy x| { c.send(x); } diff --git a/src/test/bench/msgsend-ring.rs b/src/test/bench/msgsend-ring.rs index 2be21d946af..1dfcd241b83 100644 --- a/src/test/bench/msgsend-ring.rs +++ b/src/test/bench/msgsend-ring.rs @@ -35,7 +35,7 @@ fn main() { let msg_per_task = uint::from_str(args[2]).get(); let num_port = Port(); - let mut num_chan = Chan(num_port); + let mut num_chan = Chan(&num_port); let start = time::precise_time_s(); @@ -44,12 +44,12 @@ fn main() { for uint::range(1u, num_tasks) |i| { let get_chan = Port(); - let get_chan_chan = Chan(get_chan); + let get_chan_chan = Chan(&get_chan); let new_future = do future::spawn |copy num_chan, move get_chan_chan| { let p = Port(); - get_chan_chan.send(Chan(p)); + get_chan_chan.send(Chan(&p)); thread_ring(i, msg_per_task, num_chan, p) }; futures.push(new_future); diff --git a/src/test/bench/shootout-chameneos-redux.rs b/src/test/bench/shootout-chameneos-redux.rs index 11c06d45bc8..1e3c51d8254 100644 --- a/src/test/bench/shootout-chameneos-redux.rs +++ b/src/test/bench/shootout-chameneos-redux.rs @@ -126,8 +126,8 @@ fn rendezvous(nn: uint, set: ~[color]) { let from_creatures_log: comm::Port<~str> = comm::Port(); // these channels will be passed to the creatures so they can talk to us - let to_rendezvous = comm::Chan(from_creatures); - let to_rendezvous_log = comm::Chan(from_creatures_log); + let to_rendezvous = comm::Chan(&from_creatures); + let to_rendezvous_log = comm::Chan(&from_creatures_log); // these channels will allow us to talk to each creature by 'name'/index let to_creature: ~[comm::Chan>] = diff --git a/src/test/bench/shootout-k-nucleotide.rs b/src/test/bench/shootout-k-nucleotide.rs index ae162221503..1707c0d991d 100644 --- a/src/test/bench/shootout-k-nucleotide.rs +++ b/src/test/bench/shootout-k-nucleotide.rs @@ -142,7 +142,7 @@ fn main() { // initialize each sequence sorter let sizes = ~[1u,2u,3u,4u,6u,12u,18u]; let from_child = vec::map (sizes, |_sz| comm::Port() ); - let to_parent = vec::mapi(sizes, |ii, _sz| comm::Chan(from_child[ii]) ); + let to_parent = vec::mapi(sizes, |ii, _sz| comm::Chan(&from_child[ii]) ); let to_child = vec::mapi(sizes, |ii, sz| { let ii = ii; let sz = *sz; diff --git a/src/test/bench/shootout-mandelbrot.rs b/src/test/bench/shootout-mandelbrot.rs index 8ab58207fd1..b30e04a4ca7 100644 --- a/src/test/bench/shootout-mandelbrot.rs +++ b/src/test/bench/shootout-mandelbrot.rs @@ -103,7 +103,7 @@ impl devnull: io::Writer { fn writer(path: ~str, writech: comm::Chan>, size: uint) { let p: comm::Port = comm::Port(); - let ch = comm::Chan(p); + let ch = comm::Chan(&p); comm::send(writech, ch); let cout: io::Writer = match path { ~"" => { @@ -169,7 +169,7 @@ fn main() { else { uint::from_str(args[1]).get() }; let writep = comm::Port(); - let writech = comm::Chan(writep); + let writech = comm::Chan(&writep); do task::spawn { writer(path, writech, size); }; diff --git a/src/test/bench/shootout-threadring.rs b/src/test/bench/shootout-threadring.rs index 8bee12b2243..7ac45863c5b 100644 --- a/src/test/bench/shootout-threadring.rs +++ b/src/test/bench/shootout-threadring.rs @@ -7,7 +7,7 @@ fn start(+token: int) { use iter::*; let p = comm::Port(); - let mut ch = comm::Chan(p); + let mut ch = comm::Chan(&p); for int::range(2, n_threads + 1) |i| { let id = n_threads + 2 - i; let to_child = do task::spawn_listener:: |p, copy ch| { diff --git a/src/test/bench/task-perf-linked-failure.rs b/src/test/bench/task-perf-linked-failure.rs index a59b932f7e1..a692b2f3011 100644 --- a/src/test/bench/task-perf-linked-failure.rs +++ b/src/test/bench/task-perf-linked-failure.rs @@ -11,7 +11,7 @@ // Doesn't return until all such tasks are ready, but doesn't block forever itself. fn grandchild_group(num_tasks: uint) { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); for num_tasks.times { do task::spawn { // linked diff --git a/src/test/bench/task-perf-one-million.rs b/src/test/bench/task-perf-one-million.rs index 39fe02eac79..7a30c5e2325 100644 --- a/src/test/bench/task-perf-one-million.rs +++ b/src/test/bench/task-perf-one-million.rs @@ -8,7 +8,7 @@ enum msg { fn calc(children: uint, parent_ch: comm::Chan) { let port = comm::Port(); - let chan = comm::Chan(port); + let chan = comm::Chan(&port); let mut child_chs = ~[]; let mut sum = 0; @@ -60,7 +60,7 @@ fn main() { let children = uint::from_str(args[1]).get(); let port = comm::Port(); - let chan = comm::Chan(port); + let chan = comm::Chan(&port); do task::spawn { calc(children, chan); }; diff --git a/src/test/bench/task-perf-word-count-generic.rs b/src/test/bench/task-perf-word-count-generic.rs index 1002e97497d..168e4b8b1f1 100644 --- a/src/test/bench/task-perf-word-count-generic.rs +++ b/src/test/bench/task-perf-word-count-generic.rs @@ -43,7 +43,7 @@ trait word_reader { type joinable_task = Port<()>; fn spawn_joinable(+f: fn~()) -> joinable_task { let p = Port(); - let c = Chan(p); + let c = Chan(&p); do task::spawn() |move f| { f(); c.send(()); @@ -206,7 +206,7 @@ mod map_reduce { { let p = Port(); - send(out, Chan(p)); + send(out, Chan(&p)); let mut ref_count = 0; let mut is_done = false; @@ -268,7 +268,7 @@ mod map_reduce { None => { // log(error, "creating new reducer for " + k); let p = Port(); - let ch = Chan(p); + let ch = Chan(&p); let r = reduce, kk = k; tasks.push(spawn_joinable(|| reduce_task(r, kk, ch) )); c = recv(p); diff --git a/src/test/compile-fail/issue-3096-2.rs b/src/test/compile-fail/issue-3096-2.rs index 03e13f67a9a..dd8f341b935 100644 --- a/src/test/compile-fail/issue-3096-2.rs +++ b/src/test/compile-fail/issue-3096-2.rs @@ -1,6 +1,6 @@ enum bottom { } fn main() { - let x = ptr::p2::addr_of(&()) as *bottom; + let x = ptr::addr_of(&()) as *bottom; match x { } //~ ERROR non-exhaustive patterns } diff --git a/src/test/compile-fail/non-copyable-void.rs b/src/test/compile-fail/non-copyable-void.rs index a00dd7afd6d..eaba1d86119 100644 --- a/src/test/compile-fail/non-copyable-void.rs +++ b/src/test/compile-fail/non-copyable-void.rs @@ -1,5 +1,5 @@ fn main() { - let x : *~[int] = ptr::p2::addr_of(&~[1,2,3]); + let x : *~[int] = ptr::addr_of(&~[1,2,3]); let y : *libc::c_void = x as *libc::c_void; unsafe { let _z = *y; diff --git a/src/test/compile-fail/unsendable-class.rs b/src/test/compile-fail/unsendable-class.rs index a954f6e6e3b..a47a8b76e56 100644 --- a/src/test/compile-fail/unsendable-class.rs +++ b/src/test/compile-fail/unsendable-class.rs @@ -16,6 +16,6 @@ fn foo(i:int, j: @~str) -> foo { fn main() { let cat = ~"kitty"; let po = comm::Port(); //~ ERROR missing `send` - let ch = comm::Chan(po); //~ ERROR missing `send` + let ch = comm::Chan(&po); //~ ERROR missing `send` comm::send(ch, foo(42, @cat)); //~ ERROR missing `send` } diff --git a/src/test/run-fail/port-type.rs b/src/test/run-fail/port-type.rs index 7ea778bd190..30714413c53 100644 --- a/src/test/run-fail/port-type.rs +++ b/src/test/run-fail/port-type.rs @@ -9,7 +9,7 @@ fn echo(c: Chan, oc: Chan>) { // Tests that the type argument in port gets // visited let p = Port::(); - send(oc, Chan(p)); + send(oc, Chan(&p)); let x = recv(p); send(c, x); diff --git a/src/test/run-pass/basic-1.rs b/src/test/run-pass/basic-1.rs index 8f467e24e1b..1f0bfe93ab2 100644 --- a/src/test/run-pass/basic-1.rs +++ b/src/test/run-pass/basic-1.rs @@ -10,7 +10,7 @@ fn a(c: Chan) { send(c, 10); } fn main() { let p = Port(); - let ch = Chan(p); + let ch = Chan(&p); task::spawn(|| a(ch) ); task::spawn(|| a(ch) ); let mut n: int = 0; diff --git a/src/test/run-pass/basic-2.rs b/src/test/run-pass/basic-2.rs index b5130a10027..7a81bfc3fc5 100644 --- a/src/test/run-pass/basic-2.rs +++ b/src/test/run-pass/basic-2.rs @@ -10,7 +10,7 @@ fn a(c: Chan) { debug!("task a0"); debug!("task a1"); send(c, 10); } fn main() { let p = Port(); - let ch = Chan(p); + let ch = Chan(&p); task::spawn(|| a(ch) ); task::spawn(|| b(ch) ); let mut n: int = 0; diff --git a/src/test/run-pass/basic.rs b/src/test/run-pass/basic.rs index a72c9058d10..6f8fa6e3e70 100644 --- a/src/test/run-pass/basic.rs +++ b/src/test/run-pass/basic.rs @@ -29,7 +29,7 @@ fn main() { let mut n: int = 2 + 3 * 7; let s: ~str = ~"hello there"; let p = comm::Port(); - let ch = comm::Chan(p); + let ch = comm::Chan(&p); task::spawn(|| a(ch) ); task::spawn(|| b(ch) ); let mut x: int = 10; diff --git a/src/test/run-pass/capture_nil.rs b/src/test/run-pass/capture_nil.rs index 41359ceec18..60f24307709 100644 --- a/src/test/run-pass/capture_nil.rs +++ b/src/test/run-pass/capture_nil.rs @@ -17,7 +17,7 @@ use comm::*; fn foo(&&x: ()) -> Port<()> { let p = Port(); - let c = Chan(p); + let c = Chan(&p); do task::spawn() |copy c, copy x| { c.send(x); } diff --git a/src/test/run-pass/chan-leak.rs b/src/test/run-pass/chan-leak.rs index b0a27a9a97e..f834b1b3519 100644 --- a/src/test/run-pass/chan-leak.rs +++ b/src/test/run-pass/chan-leak.rs @@ -12,7 +12,7 @@ type ctx = Chan; fn request_task(c: Chan) { let p = Port(); - send(c, Chan(p)); + send(c, Chan(&p)); let mut req: request; req = recv(p); // Need to drop req before receiving it again @@ -21,7 +21,7 @@ fn request_task(c: Chan) { fn new_cx() -> ctx { let p = Port(); - let ch = Chan(p); + let ch = Chan(&p); let t = task::spawn(|| request_task(ch) ); let mut cx: ctx; cx = recv(p); @@ -32,6 +32,6 @@ fn main() { let cx = new_cx(); let p = Port::(); - send(cx, close(Chan(p))); + send(cx, close(Chan(&p))); send(cx, quit); } diff --git a/src/test/run-pass/comm.rs b/src/test/run-pass/comm.rs index b41152f3158..003b7c83093 100644 --- a/src/test/run-pass/comm.rs +++ b/src/test/run-pass/comm.rs @@ -7,7 +7,7 @@ use comm::recv; fn main() { let p = comm::Port(); - let ch = comm::Chan(p); + let ch = comm::Chan(&p); let t = task::spawn(|| child(ch) ); let y = recv(p); error!("received"); diff --git a/src/test/run-pass/decl-with-recv.rs b/src/test/run-pass/decl-with-recv.rs index 07ce5cb63ac..b594e5334c4 100644 --- a/src/test/run-pass/decl-with-recv.rs +++ b/src/test/run-pass/decl-with-recv.rs @@ -8,7 +8,7 @@ use comm::recv; fn main() { let po = Port(); - let ch = Chan(po); + let ch = Chan(&po); send(ch, 10); let i = recv(po); assert (i == 10); diff --git a/src/test/run-pass/hashmap-memory.rs b/src/test/run-pass/hashmap-memory.rs index 24163cfa566..50b88693f39 100644 --- a/src/test/run-pass/hashmap-memory.rs +++ b/src/test/run-pass/hashmap-memory.rs @@ -47,7 +47,7 @@ mod map_reduce { None => { let p = Port(); error!("sending find_reducer"); - send(ctrl, find_reducer(str::to_bytes(key), Chan(p))); + send(ctrl, find_reducer(str::to_bytes(key), Chan(&p))); error!("receiving"); c = recv(p); log(error, c); @@ -70,7 +70,7 @@ mod map_reduce { reducers = map::HashMap(); - start_mappers(Chan(ctrl), inputs); + start_mappers(Chan(&ctrl), inputs); let mut num_mappers = vec::len(inputs) as int; diff --git a/src/test/run-pass/issue-507.rs b/src/test/run-pass/issue-507.rs index 447a892f339..0baa0aca7ad 100644 --- a/src/test/run-pass/issue-507.rs +++ b/src/test/run-pass/issue-507.rs @@ -20,7 +20,7 @@ fn child(c: Chan) { fn main() { let p = comm::Port(); - let ch = Chan(p); + let ch = Chan(&p); task::spawn(|| child(ch) ); diff --git a/src/test/run-pass/issue-687.rs b/src/test/run-pass/issue-687.rs index 6d9dc8216e1..4ed94c57784 100644 --- a/src/test/run-pass/issue-687.rs +++ b/src/test/run-pass/issue-687.rs @@ -14,7 +14,7 @@ fn producer(c: Chan<~[u8]>) { fn packager(cb: Chan>, msg: Chan) { let p: Port<~[u8]> = Port(); - send(cb, Chan(p)); + send(cb, Chan(&p)); loop { debug!("waiting for bytes"); let data = recv(p); @@ -35,9 +35,9 @@ fn packager(cb: Chan>, msg: Chan) { fn main() { let p: Port = Port(); - let ch = Chan(p); + let ch = Chan(&p); let recv_reader: Port> = Port(); - let recv_reader_chan = Chan(recv_reader); + let recv_reader_chan = Chan(&recv_reader); let pack = task::spawn(|| packager(recv_reader_chan, ch) ); let source_chan: Chan<~[u8]> = recv(recv_reader); diff --git a/src/test/run-pass/issue-783.rs b/src/test/run-pass/issue-783.rs index a9c6fed8eca..50fadefa464 100644 --- a/src/test/run-pass/issue-783.rs +++ b/src/test/run-pass/issue-783.rs @@ -6,10 +6,10 @@ fn a() { fn doit() { fn b(c: Chan>) { let p = Port(); - send(c, Chan(p)); + send(c, Chan(&p)); } let p = Port(); - let ch = Chan(p); + let ch = Chan(&p); spawn(|| b(ch) ); recv(p); } diff --git a/src/test/run-pass/ivec-tag.rs b/src/test/run-pass/ivec-tag.rs index bfcba52790b..b92d20bbe40 100644 --- a/src/test/run-pass/ivec-tag.rs +++ b/src/test/run-pass/ivec-tag.rs @@ -13,7 +13,7 @@ fn producer(c: Chan<~[u8]>) { fn main() { let p: Port<~[u8]> = Port(); - let ch = Chan(p); + let ch = Chan(&p); let prod = task::spawn(|| producer(ch) ); let data: ~[u8] = recv(p); diff --git a/src/test/run-pass/lazychan.rs b/src/test/run-pass/lazychan.rs index 1446ebc9493..06e89a298a9 100644 --- a/src/test/run-pass/lazychan.rs +++ b/src/test/run-pass/lazychan.rs @@ -5,7 +5,7 @@ use comm::*; fn main() { let p = Port(); - let ch = Chan(p); + let ch = Chan(&p); let mut y: int; task::spawn(|| child(ch) ); diff --git a/src/test/run-pass/many.rs b/src/test/run-pass/many.rs index 2362f683e5e..83ebc0ef844 100644 --- a/src/test/run-pass/many.rs +++ b/src/test/run-pass/many.rs @@ -7,7 +7,7 @@ fn sub(parent: comm::Chan, id: int) { comm::send(parent, 0); } else { let p = comm::Port(); - let ch = comm::Chan(p); + let ch = comm::Chan(&p); let child = task::spawn(|| sub(ch, id - 1) ); let y = comm::recv(p); comm::send(parent, y + 1); @@ -16,7 +16,7 @@ fn sub(parent: comm::Chan, id: int) { fn main() { let p = comm::Port(); - let ch = comm::Chan(p); + let ch = comm::Chan(&p); let child = task::spawn(|| sub(ch, 200) ); let y = comm::recv(p); debug!("transmission complete"); diff --git a/src/test/run-pass/rt-circular-buffer.rs b/src/test/run-pass/rt-circular-buffer.rs index 2f5245f7bc4..2af5535ad28 100644 --- a/src/test/run-pass/rt-circular-buffer.rs +++ b/src/test/run-pass/rt-circular-buffer.rs @@ -18,7 +18,7 @@ type record = {val1: u32, val2: u32, val3: u32}; // assertions. fn test_init() { let myport = Port(); - let mychan = Chan(myport); + let mychan = Chan(&myport); let val: record = {val1: 0u32, val2: 0u32, val3: 0u32}; send(mychan, val); } @@ -28,7 +28,7 @@ fn test_init() { // Don't trigger any assertions. fn test_grow() { let myport = Port(); - let mychan = Chan(myport); + let mychan = Chan(&myport); for uint::range(0u, 100u) |i| { let val: record = {val1: 0u32, val2: 0u32, val3: 0u32}; comm::send(mychan, val); @@ -39,14 +39,14 @@ fn test_grow() { // Don't allow the buffer to shrink below it's original size fn test_shrink1() { let myport = Port(); - let mychan = Chan(myport); + let mychan = Chan(&myport); send(mychan, 0i8); let x = recv(myport); } fn test_shrink2() { let myport = Port(); - let mychan = Chan(myport); + let mychan = Chan(&myport); for uint::range(0u, 100u) |_i| { let val: record = {val1: 0u32, val2: 0u32, val3: 0u32}; send(mychan, val); @@ -58,7 +58,7 @@ fn test_shrink2() { // Test rotating the buffer when the unit size is not a power of two fn test_rotate() { let myport = Port(); - let mychan = Chan(myport); + let mychan = Chan(&myport); for uint::range(0u, 100u) |i| { let val = {val1: i as u32, val2: i as u32, val3: i as u32}; send(mychan, val); @@ -74,7 +74,7 @@ fn test_rotate() { // the unit size is not a power of two fn test_rotate_grow() { let myport = Port::(); - let mychan = Chan(myport); + let mychan = Chan(&myport); for uint::range(0u, 10u) |j| { for uint::range(0u, 10u) |i| { let val: record = diff --git a/src/test/run-pass/rt-sched-1.rs b/src/test/run-pass/rt-sched-1.rs index 15207b668fe..690d93172eb 100644 --- a/src/test/run-pass/rt-sched-1.rs +++ b/src/test/run-pass/rt-sched-1.rs @@ -18,7 +18,7 @@ extern mod rustrt { fn main() unsafe { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); let parent_sched_id = rustrt::rust_get_sched_id(); error!("parent %?", parent_sched_id); let num_threads = 1u; diff --git a/src/test/run-pass/send-iloop.rs b/src/test/run-pass/send-iloop.rs index 9e369d819d4..b0003e8b5b1 100644 --- a/src/test/run-pass/send-iloop.rs +++ b/src/test/run-pass/send-iloop.rs @@ -8,7 +8,7 @@ fn die() { fn iloop() { task::spawn(|| die() ); let p = comm::Port::<()>(); - let c = comm::Chan(p); + let c = comm::Chan(&p); loop { // Sending and receiving here because these actions yield, // at which point our child can kill us diff --git a/src/test/run-pass/send-resource.rs b/src/test/run-pass/send-resource.rs index 3fc3afb12da..a2ef71b1412 100644 --- a/src/test/run-pass/send-resource.rs +++ b/src/test/run-pass/send-resource.rs @@ -14,11 +14,11 @@ fn test(f: int) -> test { fn main() { let p = Port(); - let c = Chan(p); + let c = Chan(&p); do spawn() { let p = Port(); - c.send(Chan(p)); + c.send(Chan(&p)); let _r = p.recv(); } diff --git a/src/test/run-pass/send-type-inference.rs b/src/test/run-pass/send-type-inference.rs index 4f0b9667524..8bca7880787 100644 --- a/src/test/run-pass/send-type-inference.rs +++ b/src/test/run-pass/send-type-inference.rs @@ -8,6 +8,6 @@ type command = {key: K, val: V}; fn cache_server(c: Chan>>) { let ctrl = Port(); - send(c, Chan(ctrl)); + send(c, Chan(&ctrl)); } fn main() { } diff --git a/src/test/run-pass/sendable-class.rs b/src/test/run-pass/sendable-class.rs index ecaa9238b27..d9b0ec33643 100644 --- a/src/test/run-pass/sendable-class.rs +++ b/src/test/run-pass/sendable-class.rs @@ -14,6 +14,6 @@ fn foo(i:int, j: char) -> foo { fn main() { let po = comm::Port::(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); comm::send(ch, foo(42, 'c')); } \ No newline at end of file diff --git a/src/test/run-pass/spawn-types.rs b/src/test/run-pass/spawn-types.rs index 22c20ed7e5e..043bf125532 100644 --- a/src/test/run-pass/spawn-types.rs +++ b/src/test/run-pass/spawn-types.rs @@ -15,6 +15,6 @@ fn iotask(cx: ctx, ip: ~str) { fn main() { let p = comm::Port::(); - let ch = comm::Chan(p); + let ch = comm::Chan(&p); task::spawn(|| iotask(ch, ~"localhost") ); } diff --git a/src/test/run-pass/task-comm-chan-cleanup.rs b/src/test/run-pass/task-comm-chan-cleanup.rs index 7149f307963..b81f001c00d 100644 --- a/src/test/run-pass/task-comm-chan-cleanup.rs +++ b/src/test/run-pass/task-comm-chan-cleanup.rs @@ -2,6 +2,6 @@ extern mod std; fn main() { let p = comm::Port(); - let c = comm::Chan(p); + let c = comm::Chan(&p); comm::send(c, ~"coffee"); } \ No newline at end of file diff --git a/src/test/run-pass/task-comm-chan-cleanup2.rs b/src/test/run-pass/task-comm-chan-cleanup2.rs index 7149f307963..b81f001c00d 100644 --- a/src/test/run-pass/task-comm-chan-cleanup2.rs +++ b/src/test/run-pass/task-comm-chan-cleanup2.rs @@ -2,6 +2,6 @@ extern mod std; fn main() { let p = comm::Port(); - let c = comm::Chan(p); + let c = comm::Chan(&p); comm::send(c, ~"coffee"); } \ No newline at end of file diff --git a/src/test/run-pass/task-comm-chan-cleanup3.rs b/src/test/run-pass/task-comm-chan-cleanup3.rs index 4dc10f86716..14cb272b62f 100644 --- a/src/test/run-pass/task-comm-chan-cleanup3.rs +++ b/src/test/run-pass/task-comm-chan-cleanup3.rs @@ -3,7 +3,7 @@ extern mod std; fn main() { let c = { let p = comm::Port(); - comm::Chan(p) + comm::Chan(&p) }; comm::send(c, ~"coffee"); } \ No newline at end of file diff --git a/src/test/run-pass/task-comm-chan-cleanup4.rs b/src/test/run-pass/task-comm-chan-cleanup4.rs index 215843fbac7..852f0e5607d 100644 --- a/src/test/run-pass/task-comm-chan-cleanup4.rs +++ b/src/test/run-pass/task-comm-chan-cleanup4.rs @@ -12,7 +12,7 @@ fn starship(&&ch: comm::Chan<~str>) { fn starbase() { for int::range(0, 10) |_i| { let p = comm::Port(); - let c = comm::Chan(p); + let c = comm::Chan(&p); task::spawn(|| starship(c) ); task::yield(); } diff --git a/src/test/run-pass/task-comm-chan-nil.rs b/src/test/run-pass/task-comm-chan-nil.rs index 87b91889356..7cbd24844fe 100644 --- a/src/test/run-pass/task-comm-chan-nil.rs +++ b/src/test/run-pass/task-comm-chan-nil.rs @@ -7,7 +7,7 @@ extern mod std; // or not this is desirable I don't know, but here's a regression test. fn main() { let po = comm::Port(); - let ch = comm::Chan(po); + let ch = comm::Chan(&po); comm::send(ch, ()); let n: () = comm::recv(po); assert (n == ()); diff --git a/src/test/run-pass/task-comm.rs b/src/test/run-pass/task-comm.rs index 8d144b1a399..c88b556fd53 100644 --- a/src/test/run-pass/task-comm.rs +++ b/src/test/run-pass/task-comm.rs @@ -32,7 +32,7 @@ fn test00() { debug!("Creating tasks"); let po = Port(); - let ch = Chan(po); + let ch = Chan(&po); let mut i: int = 0; @@ -69,7 +69,7 @@ fn test01() { fn test02() { let p = Port(); - let c = Chan(p); + let c = Chan(&p); debug!("Writing to a local task channel."); send(c, 42); debug!("Reading from a local task port."); @@ -101,7 +101,7 @@ fn test05_start(ch: Chan) { fn test05() { let po = comm::Port(); - let ch = Chan(po); + let ch = Chan(&po); task::spawn(|| test05_start(ch) ); let mut value: int; value = recv(po); diff --git a/src/test/run-pass/task-killjoin-rsrc.rs b/src/test/run-pass/task-killjoin-rsrc.rs index 405ba82b790..1cea7d61f8c 100644 --- a/src/test/run-pass/task-killjoin-rsrc.rs +++ b/src/test/run-pass/task-killjoin-rsrc.rs @@ -36,7 +36,7 @@ fn joinable(+f: fn~()) -> comm::Port { *b = true; } let p = comm::Port(); - let c = comm::Chan(p); + let c = comm::Chan(&p); do task::spawn_unlinked { wrapper(c, copy f) }; p } diff --git a/src/test/run-pass/task-spawn-move-and-copy.rs b/src/test/run-pass/task-spawn-move-and-copy.rs index 7316a927751..09c880d489c 100644 --- a/src/test/run-pass/task-spawn-move-and-copy.rs +++ b/src/test/run-pass/task-spawn-move-and-copy.rs @@ -1,6 +1,6 @@ fn main() { let p = comm::Port::(); - let ch = comm::Chan(p); + let ch = comm::Chan(&p); let x = ~1; let x_in_parent = ptr::addr_of(&(*x)) as uint; diff --git a/src/test/run-pass/unique-send-2.rs b/src/test/run-pass/unique-send-2.rs index 73cd7adc034..70d58ea6cc3 100644 --- a/src/test/run-pass/unique-send-2.rs +++ b/src/test/run-pass/unique-send-2.rs @@ -6,7 +6,7 @@ fn child(c: comm::Chan<~uint>, i: uint) { fn main() { let p = comm::Port(); - let ch = comm::Chan(p); + let ch = comm::Chan(&p); let n = 100u; let mut expected = 0u; for uint::range(0u, n) |i| { diff --git a/src/test/run-pass/unique-send.rs b/src/test/run-pass/unique-send.rs index 3acaa1b59f6..cf06a55ae7a 100644 --- a/src/test/run-pass/unique-send.rs +++ b/src/test/run-pass/unique-send.rs @@ -2,7 +2,7 @@ extern mod std; fn main() { let p = comm::Port(); - let c = comm::Chan(p); + let c = comm::Chan(&p); comm::send(c, ~100); let v = comm::recv(p); assert v == ~100; diff --git a/src/test/run-pass/unwind-resource.rs b/src/test/run-pass/unwind-resource.rs index 08d6af273d2..a602a271602 100644 --- a/src/test/run-pass/unwind-resource.rs +++ b/src/test/run-pass/unwind-resource.rs @@ -22,7 +22,7 @@ fn f(c: comm::Chan) { fn main() { let p = comm::Port(); - let c = comm::Chan(p); + let c = comm::Chan(&p); task::spawn_unlinked(|| f(c) ); error!("hiiiiiiiii"); assert comm::recv(p); -- cgit 1.4.1-3-g733a5 From 202c8fd0eb20ebab07e4da81c96cb147020fb7c9 Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Wed, 3 Oct 2012 14:57:02 -0700 Subject: Kill bootstrapping code in ptr --- src/libcore/ptr.rs | 6 ------ src/libstd/uv_iotask.rs | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) (limited to 'src/libstd') diff --git a/src/libcore/ptr.rs b/src/libcore/ptr.rs index 608cbdf84a2..ffa11dcfc75 100644 --- a/src/libcore/ptr.rs +++ b/src/libcore/ptr.rs @@ -31,12 +31,6 @@ extern mod rusti { #[inline(always)] pub pure fn addr_of(val: &T) -> *T { unsafe { rusti::addr_of(*val) } } -pub mod p2 { - /// Get an unsafe pointer to a value - #[inline(always)] - pub pure fn addr_of(val: &T) -> *T { unsafe { rusti::addr_of(*val) } } -} - /// Get an unsafe mut pointer to a value #[inline(always)] pub pure fn mut_addr_of(val: &T) -> *mut T { diff --git a/src/libstd/uv_iotask.rs b/src/libstd/uv_iotask.rs index ca4d655db59..2e31e15a70d 100644 --- a/src/libstd/uv_iotask.rs +++ b/src/libstd/uv_iotask.rs @@ -8,7 +8,7 @@ // tjc: forbid deprecated modes again after a snapshot use libc::c_void; -use ptr::p2::addr_of; +use ptr::addr_of; use comm = core::comm; use comm::{Port, Chan, listen}; use task::TaskBuilder; -- cgit 1.4.1-3-g733a5 From 8fc60af441a1375ee73a0efe4524b54ff039e69a Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Thu, 4 Oct 2012 19:58:31 -0700 Subject: Remove by-copy mode from std, mostly One instance remains in net_tcp due to a foreign fn. Lots of instances remain in serialization.rs, but IIRC that is being removed. I had to do unholy things to task-perf-word-count-generic to get it to compile after demoding pipes. I may well have messed up its performance, but it passes. --- src/libcore/future.rs | 4 +-- src/libcore/pipes.rs | 4 +-- src/libcore/private.rs | 2 +- src/libcore/task.rs | 38 ++++++++++++------------ src/libcore/task/spawn.rs | 4 +-- src/libstd/arc.rs | 2 +- src/libstd/bitv.rs | 4 +-- src/libstd/c_vec.rs | 3 +- src/libstd/cell.rs | 2 +- src/libstd/comm.rs | 4 +-- src/libstd/dbg.rs | 2 +- src/libstd/deque.rs | 4 +-- src/libstd/ebml.rs | 15 +++++----- src/libstd/ebml2.rs | 3 +- src/libstd/fun_treemap.rs | 6 ++-- src/libstd/getopts.rs | 7 ++--- src/libstd/json.rs | 4 +-- src/libstd/list.rs | 6 ++-- src/libstd/map.rs | 15 +++++----- src/libstd/net_tcp.rs | 21 ++++++------- src/libstd/net_url.rs | 12 ++++---- src/libstd/par.rs | 10 ++++--- src/libstd/smallintmap.rs | 6 ++-- src/libstd/std.rc | 1 + src/libstd/sync.rs | 2 +- src/libstd/test.rs | 2 +- src/libstd/time.rs | 2 +- src/libstd/timer.rs | 2 +- src/libstd/treemap.rs | 8 ++--- src/libstd/uv_iotask.rs | 7 ++--- src/libstd/uv_ll.rs | 12 ++++---- src/libsyntax/ext/pipes/ast_builder.rs | 8 ----- src/libsyntax/ext/pipes/pipec.rs | 14 ++++----- src/rustc/driver/rustc.rs | 20 ++++++------- src/test/bench/task-perf-word-count-generic.rs | 41 +++++++++++++------------- 35 files changed, 146 insertions(+), 151 deletions(-) (limited to 'src/libstd') diff --git a/src/libcore/future.rs b/src/libcore/future.rs index e07c03cafb6..efd5ff65aa5 100644 --- a/src/libcore/future.rs +++ b/src/libcore/future.rs @@ -87,7 +87,7 @@ pub fn from_port(port: future_pipe::client::waiting) -> } } -pub fn from_fn(+f: ~fn() -> A) -> Future { +pub fn from_fn(f: ~fn() -> A) -> Future { /*! * Create a future from a function. * @@ -99,7 +99,7 @@ pub fn from_fn(+f: ~fn() -> A) -> Future { Future {state: Pending(move f)} } -pub fn spawn(+blk: fn~() -> A) -> Future { +pub fn spawn(blk: fn~() -> A) -> Future { /*! * Create a future from a unique closure. * diff --git a/src/libcore/pipes.rs b/src/libcore/pipes.rs index c53f069174c..791c6bccde8 100644 --- a/src/libcore/pipes.rs +++ b/src/libcore/pipes.rs @@ -860,7 +860,7 @@ endpoint is passed to the new task. pub fn spawn_service( init: extern fn() -> (SendPacketBuffered, RecvPacketBuffered), - +service: fn~(v: RecvPacketBuffered)) + service: fn~(v: RecvPacketBuffered)) -> SendPacketBuffered { let (client, server) = init(); @@ -884,7 +884,7 @@ receive state. pub fn spawn_service_recv( init: extern fn() -> (RecvPacketBuffered, SendPacketBuffered), - +service: fn~(v: SendPacketBuffered)) + service: fn~(v: SendPacketBuffered)) -> RecvPacketBuffered { let (client, server) = init(); diff --git a/src/libcore/private.rs b/src/libcore/private.rs index 992c8e011f7..c4ef136a592 100644 --- a/src/libcore/private.rs +++ b/src/libcore/private.rs @@ -46,7 +46,7 @@ type GlobalPtr = *libc::uintptr_t; pub unsafe fn chan_from_global_ptr( global: GlobalPtr, task_fn: fn() -> task::TaskBuilder, - +f: fn~(comm::Port) + f: fn~(comm::Port) ) -> comm::Chan { enum Msg { diff --git a/src/libcore/task.rs b/src/libcore/task.rs index 06150227e95..8d7791d18d9 100644 --- a/src/libcore/task.rs +++ b/src/libcore/task.rs @@ -220,7 +220,7 @@ pub type TaskOpts = { // FIXME (#2585): Replace the 'consumed' bit with move mode on self pub enum TaskBuilder = { opts: TaskOpts, - gen_body: fn@(+v: fn~()) -> fn~(), + gen_body: fn@(v: fn~()) -> fn~(), can_not_copy: Option, mut consumed: bool, }; @@ -233,7 +233,7 @@ pub enum TaskBuilder = { pub fn task() -> TaskBuilder { TaskBuilder({ opts: default_task_opts(), - gen_body: |+body| move body, // Identity function + gen_body: |body| move body, // Identity function can_not_copy: None, mut consumed: false, }) @@ -410,7 +410,7 @@ impl TaskBuilder { * generator by applying the task body which results from the * existing body generator to the new body generator. */ - fn add_wrapper(wrapper: fn@(+v: fn~()) -> fn~()) -> TaskBuilder { + fn add_wrapper(wrapper: fn@(v: fn~()) -> fn~()) -> TaskBuilder { let prev_gen_body = self.gen_body; let notify_chan = if self.opts.notify_chan.is_none() { None @@ -442,7 +442,7 @@ impl TaskBuilder { * When spawning into a new scheduler, the number of threads requested * must be greater than zero. */ - fn spawn(+f: fn~()) { + fn spawn(f: fn~()) { let notify_chan = if self.opts.notify_chan.is_none() { None } else { @@ -460,7 +460,7 @@ impl TaskBuilder { spawn::spawn_raw(move opts, x.gen_body(move f)); } /// Runs a task, while transfering ownership of one argument to the child. - fn spawn_with(arg: A, +f: fn~(+v: A)) { + fn spawn_with(arg: A, f: fn~(v: A)) { let arg = ~mut Some(move arg); do self.spawn |move arg, move f| { f(option::swap_unwrap(arg)) @@ -478,7 +478,7 @@ impl TaskBuilder { * otherwise be required to establish communication from the parent * to the child. */ - fn spawn_listener(+f: fn~(comm::Port)) -> comm::Chan { + fn spawn_listener(f: fn~(comm::Port)) -> comm::Chan { let setup_po = comm::Port(); let setup_ch = comm::Chan(&setup_po); do self.spawn |move f| { @@ -494,7 +494,7 @@ impl TaskBuilder { * Runs a new task, setting up communication in both directions */ fn spawn_conversation - (+f: fn~(comm::Port, comm::Chan)) + (f: fn~(comm::Port, comm::Chan)) -> (comm::Port, comm::Chan) { let from_child = comm::Port(); let to_parent = comm::Chan(&from_child); @@ -517,7 +517,7 @@ impl TaskBuilder { * # Failure * Fails if a future_result was already set for this task. */ - fn try(+f: fn~() -> T) -> Result { + fn try(f: fn~() -> T) -> Result { let po = comm::Port(); let ch = comm::Chan(&po); let mut result = None; @@ -556,7 +556,7 @@ pub fn default_task_opts() -> TaskOpts { /* Spawn convenience functions */ -pub fn spawn(+f: fn~()) { +pub fn spawn(f: fn~()) { /*! * Creates and executes a new child task * @@ -569,7 +569,7 @@ pub fn spawn(+f: fn~()) { task().spawn(move f) } -pub fn spawn_unlinked(+f: fn~()) { +pub fn spawn_unlinked(f: fn~()) { /*! * Creates a child task unlinked from the current one. If either this * task or the child task fails, the other will not be killed. @@ -578,7 +578,7 @@ pub fn spawn_unlinked(+f: fn~()) { task().unlinked().spawn(move f) } -pub fn spawn_supervised(+f: fn~()) { +pub fn spawn_supervised(f: fn~()) { /*! * Creates a child task unlinked from the current one. If either this * task or the child task fails, the other will not be killed. @@ -587,7 +587,7 @@ pub fn spawn_supervised(+f: fn~()) { task().supervised().spawn(move f) } -pub fn spawn_with(+arg: A, +f: fn~(+v: A)) { +pub fn spawn_with(arg: A, f: fn~(v: A)) { /*! * Runs a task, while transfering ownership of one argument to the * child. @@ -601,7 +601,7 @@ pub fn spawn_with(+arg: A, +f: fn~(+v: A)) { task().spawn_with(move arg, move f) } -pub fn spawn_listener(+f: fn~(comm::Port)) -> comm::Chan { +pub fn spawn_listener(f: fn~(comm::Port)) -> comm::Chan { /*! * Runs a new task while providing a channel from the parent to the child * @@ -612,7 +612,7 @@ pub fn spawn_listener(+f: fn~(comm::Port)) -> comm::Chan { } pub fn spawn_conversation - (+f: fn~(comm::Port, comm::Chan)) + (f: fn~(comm::Port, comm::Chan)) -> (comm::Port, comm::Chan) { /*! * Runs a new task, setting up communication in both directions @@ -623,7 +623,7 @@ pub fn spawn_conversation task().spawn_conversation(move f) } -pub fn spawn_sched(mode: SchedMode, +f: fn~()) { +pub fn spawn_sched(mode: SchedMode, f: fn~()) { /*! * Creates a new scheduler and executes a task on it * @@ -640,7 +640,7 @@ pub fn spawn_sched(mode: SchedMode, +f: fn~()) { task().sched_mode(mode).spawn(move f) } -pub fn try(+f: fn~() -> T) -> Result { +pub fn try(f: fn~() -> T) -> Result { /*! * Execute a function in another task and return either the return value * of the function or result::err. @@ -1127,7 +1127,7 @@ fn test_spawn_sched_blocking() { } #[cfg(test)] -fn avoid_copying_the_body(spawnfn: fn(+v: fn~())) { +fn avoid_copying_the_body(spawnfn: fn(v: fn~())) { let p = comm::Port::(); let ch = comm::Chan(&p); @@ -1150,7 +1150,7 @@ fn test_avoid_copying_the_body_spawn() { #[test] fn test_avoid_copying_the_body_spawn_listener() { - do avoid_copying_the_body |+f| { + do avoid_copying_the_body |f| { spawn_listener(fn~(move f, _po: comm::Port) { f(); }); @@ -1168,7 +1168,7 @@ fn test_avoid_copying_the_body_task_spawn() { #[test] fn test_avoid_copying_the_body_spawn_listener_1() { - do avoid_copying_the_body |+f| { + do avoid_copying_the_body |f| { task().spawn_listener(fn~(move f, _po: comm::Port) { f(); }); diff --git a/src/libcore/task/spawn.rs b/src/libcore/task/spawn.rs index 2db63d20f16..6eaace1fa1a 100644 --- a/src/libcore/task/spawn.rs +++ b/src/libcore/task/spawn.rs @@ -488,7 +488,7 @@ fn gen_child_taskgroup(linked: bool, supervised: bool) } } -pub fn spawn_raw(opts: TaskOpts, +f: fn~()) { +pub fn spawn_raw(opts: TaskOpts, f: fn~()) { let (child_tg, ancestors, is_main) = gen_child_taskgroup(opts.linked, opts.supervised); @@ -533,7 +533,7 @@ pub fn spawn_raw(opts: TaskOpts, +f: fn~()) { fn make_child_wrapper(child: *rust_task, child_arc: TaskGroupArc, ancestors: AncestorList, is_main: bool, notify_chan: Option>, - +f: fn~()) -> fn~() { + f: fn~()) -> fn~() { let child_data = ~mut Some((move child_arc, move ancestors)); return fn~(move notify_chan, move child_data, move f) { // Agh. Get move-mode items into the closure. FIXME (#2829) diff --git a/src/libstd/arc.rs b/src/libstd/arc.rs index 60db62ce01a..addabb2ddb9 100644 --- a/src/libstd/arc.rs +++ b/src/libstd/arc.rs @@ -1,5 +1,5 @@ // NB: transitionary, de-mode-ing. -// tjc: forbid deprecated modes again after snap +#[forbid(deprecated_mode)]; /** * Concurrency-enabled mechanisms for sharing mutable and/or immutable state * between tasks. diff --git a/src/libstd/bitv.rs b/src/libstd/bitv.rs index 77f0d39c338..91af4a3d653 100644 --- a/src/libstd/bitv.rs +++ b/src/libstd/bitv.rs @@ -1,4 +1,4 @@ -// tjc: forbid deprecated modes again after snap +#[forbid(deprecated_mode)]; use vec::{to_mut, from_elem}; @@ -553,7 +553,7 @@ pure fn land(w0: uint, w1: uint) -> uint { return w0 & w1; } pure fn right(_w0: uint, w1: uint) -> uint { return w1; } impl Bitv: ops::Index { - pure fn index(+i: uint) -> bool { + pure fn index(i: uint) -> bool { self.get(i) } } diff --git a/src/libstd/c_vec.rs b/src/libstd/c_vec.rs index 1ff5b63ee12..06d56ed1ae5 100644 --- a/src/libstd/c_vec.rs +++ b/src/libstd/c_vec.rs @@ -25,6 +25,7 @@ * great care must be taken to ensure that a reference to the c_vec::t is * still held if needed. */ +#[forbid(deprecated_mode)]; /** * The type representing a foreign chunk of memory @@ -111,7 +112,7 @@ pub fn get(t: CVec, ofs: uint) -> T { * * Fails if `ofs` is greater or equal to the length of the vector */ -pub fn set(t: CVec, ofs: uint, +v: T) { +pub fn set(t: CVec, ofs: uint, v: T) { assert ofs < len(t); unsafe { *ptr::mut_offset((*t).base, ofs) = v }; } diff --git a/src/libstd/cell.rs b/src/libstd/cell.rs index 866dbce1c08..c888957728a 100644 --- a/src/libstd/cell.rs +++ b/src/libstd/cell.rs @@ -1,4 +1,4 @@ -// tjc: forbid deprecated modes again after snap +#[forbid(deprecated_mode)]; /// A dynamic, mutable location. /// /// Similar to a mutable option type, but friendlier. diff --git a/src/libstd/comm.rs b/src/libstd/comm.rs index 4d87ebeac99..1a897a2c2fa 100644 --- a/src/libstd/comm.rs +++ b/src/libstd/comm.rs @@ -16,11 +16,11 @@ pub struct DuplexStream { } impl DuplexStream : Channel { - fn send(+x: T) { + fn send(x: T) { self.chan.send(move x) } - fn try_send(+x: T) -> bool { + fn try_send(x: T) -> bool { self.chan.try_send(move x) } } diff --git a/src/libstd/dbg.rs b/src/libstd/dbg.rs index f85d4655ad1..f141a028e65 100644 --- a/src/libstd/dbg.rs +++ b/src/libstd/dbg.rs @@ -1,4 +1,4 @@ -// tjc: forbid deprecated modes again after snap +#[forbid(deprecated_mode)]; //! Unsafe debugging functions for inspecting values. use cast::reinterpret_cast; diff --git a/src/libstd/deque.rs b/src/libstd/deque.rs index f4fbc11c4f7..37798d9a627 100644 --- a/src/libstd/deque.rs +++ b/src/libstd/deque.rs @@ -1,5 +1,5 @@ //! A deque. Untested as of yet. Likely buggy -// tjc: forbid deprecated modes again after snap +#[forbid(deprecated_mode)]; #[forbid(non_camel_case_types)]; use option::{Some, None}; @@ -200,7 +200,7 @@ mod tests { assert (deq.get(3) == d); } - fn test_parameterized(a: T, +b: T, +c: T, +d: T) { + fn test_parameterized(a: T, b: T, c: T, d: T) { let deq: deque::Deque = deque::create::(); assert (deq.size() == 0u); deq.add_front(a); diff --git a/src/libstd/ebml.rs b/src/libstd/ebml.rs index 238e9d77a77..3df5a70a0c1 100644 --- a/src/libstd/ebml.rs +++ b/src/libstd/ebml.rs @@ -1,3 +1,4 @@ +#[forbid(deprecated_mode)]; // Simple Extensible Binary Markup Language (ebml) reader and writer on a // cursor model. See the specification here: // http://www.matroska.org/technical/specs/rfc/index.html @@ -17,7 +18,7 @@ pub type Doc = {data: @~[u8], start: uint, end: uint}; type TaggedDoc = {tag: uint, doc: Doc}; impl Doc: ops::Index { - pure fn index(+tag: uint) -> Doc { + pure fn index(tag: uint) -> Doc { unsafe { get_doc(self, tag) } @@ -563,11 +564,11 @@ impl EbmlDeserializer: serialization::Deserializer { #[test] fn test_option_int() { - fn serialize_1(&&s: S, v: int) { + fn serialize_1(s: &S, v: int) { s.emit_i64(v as i64); } - fn serialize_0(&&s: S, v: Option) { + fn serialize_0(s: &S, v: Option) { do s.emit_enum(~"core::option::t") { match v { None => s.emit_enum_variant( @@ -581,11 +582,11 @@ fn test_option_int() { } } - fn deserialize_1(&&s: S) -> int { + fn deserialize_1(s: &S) -> int { s.read_i64() as int } - fn deserialize_0(&&s: S) -> Option { + fn deserialize_0(s: &S) -> Option { do s.read_enum(~"core::option::t") { do s.read_enum_variant |i| { match i { @@ -608,11 +609,11 @@ fn test_option_int() { debug!("v == %?", v); let bytes = do io::with_bytes_writer |wr| { let ebml_w = ebml::Writer(wr); - serialize_0(ebml_w, v); + serialize_0(&ebml_w, v); }; let ebml_doc = ebml::Doc(@bytes); let deser = ebml_deserializer(ebml_doc); - let v1 = deserialize_0(deser); + let v1 = deserialize_0(&deser); debug!("v1 == %?", v1); assert v == v1; } diff --git a/src/libstd/ebml2.rs b/src/libstd/ebml2.rs index 30d68da06f5..f88aad1ac63 100644 --- a/src/libstd/ebml2.rs +++ b/src/libstd/ebml2.rs @@ -1,3 +1,4 @@ +#[forbid(deprecated_mode)]; use serialization2; // Simple Extensible Binary Markup Language (ebml) reader and writer on a @@ -31,7 +32,7 @@ struct TaggedDoc { } impl Doc: ops::Index { - pure fn index(+tag: uint) -> Doc { + pure fn index(tag: uint) -> Doc { unsafe { get_doc(self, tag) } diff --git a/src/libstd/fun_treemap.rs b/src/libstd/fun_treemap.rs index 2973c8cc9f7..a1e29b03b45 100644 --- a/src/libstd/fun_treemap.rs +++ b/src/libstd/fun_treemap.rs @@ -1,4 +1,4 @@ -#[warn(deprecated_mode)]; +#[forbid(deprecated_mode)]; /*! * A functional key,value store that works on anything. @@ -26,7 +26,7 @@ enum TreeNode { pub fn init() -> Treemap { @Empty } /// Insert a value into the map -pub fn insert(m: Treemap, +k: K, +v: V) +pub fn insert(m: Treemap, k: K, v: V) -> Treemap { @match m { @Empty => Node(@k, @v, @Empty, @Empty), @@ -41,7 +41,7 @@ pub fn insert(m: Treemap, +k: K, +v: V) } /// Find a value based on the key -pub fn find(m: Treemap, +k: K) -> Option { +pub fn find(m: Treemap, k: K) -> Option { match *m { Empty => None, Node(@ref kk, @copy v, left, right) => { diff --git a/src/libstd/getopts.rs b/src/libstd/getopts.rs index 771eaaeca7f..6da51571e34 100644 --- a/src/libstd/getopts.rs +++ b/src/libstd/getopts.rs @@ -61,8 +61,7 @@ * do_work(input, output); * } */ - -// tjc: forbid deprecated modes again after snap +#[forbid(deprecated_mode)]; use core::cmp::Eq; use core::result::{Err, Ok}; @@ -162,7 +161,7 @@ fn name_str(nm: &Name) -> ~str { }; } -fn find_opt(opts: &[Opt], +nm: Name) -> Option { +fn find_opt(opts: &[Opt], nm: Name) -> Option { vec::position(opts, |opt| opt.name == nm) } @@ -214,7 +213,7 @@ pub type Result = result::Result; */ pub fn getopts(args: &[~str], opts: &[Opt]) -> Result unsafe { let n_opts = vec::len::(opts); - fn f(+_x: uint) -> ~[Optval] { return ~[]; } + fn f(_x: uint) -> ~[Optval] { return ~[]; } let vals = vec::to_mut(vec::from_fn(n_opts, f)); let mut free: ~[~str] = ~[]; let l = vec::len(args); diff --git a/src/libstd/json.rs b/src/libstd/json.rs index f244f2869a6..09d00216209 100644 --- a/src/libstd/json.rs +++ b/src/libstd/json.rs @@ -1,6 +1,6 @@ // Rust JSON serialization library // Copyright (c) 2011 Google Inc. -// tjc: forbid deprecated modes again after snap +#[forbid(deprecated_mode)]; #[forbid(non_camel_case_types)]; //! json serialization @@ -399,7 +399,7 @@ priv impl Parser { while char::is_whitespace(self.ch) { self.bump(); } } - fn parse_ident(ident: &str, +value: Json) -> Result { + fn parse_ident(ident: &str, value: Json) -> Result { if str::all(ident, |c| c == self.next_char()) { self.bump(); Ok(move value) diff --git a/src/libstd/list.rs b/src/libstd/list.rs index 4ff493f5ab9..396edb54885 100644 --- a/src/libstd/list.rs +++ b/src/libstd/list.rs @@ -1,5 +1,5 @@ //! A standard linked list -#[warn(deprecated_mode)]; +#[forbid(deprecated_mode)]; use core::cmp::Eq; use core::option; @@ -56,7 +56,7 @@ pub fn find(ls: @List, f: fn((&T)) -> bool) -> Option { } /// Returns true if a list contains an element with the given value -pub fn has(ls: @List, +elt: T) -> bool { +pub fn has(ls: @List, elt: T) -> bool { for each(ls) |e| { if *e == elt { return true; } } @@ -114,7 +114,7 @@ pub pure fn append(l: @List, m: @List) -> @List { /* /// Push one element into the front of a list, returning a new list /// THIS VERSION DOESN'T ACTUALLY WORK -pure fn push(ll: &mut @list, +vv: T) { +pure fn push(ll: &mut @list, vv: T) { ll = &mut @cons(vv, *ll) } */ diff --git a/src/libstd/map.rs b/src/libstd/map.rs index 90476ea101a..765d40339d3 100644 --- a/src/libstd/map.rs +++ b/src/libstd/map.rs @@ -1,6 +1,5 @@ //! A map type - -// tjc: forbid deprecated modes again after snap +#[forbid(deprecated_mode)]; use io::WriterUtil; use to_str::ToStr; @@ -28,7 +27,7 @@ pub trait Map { * * Returns true if the key did not already exist in the map */ - fn insert(v: K, +v: V) -> bool; + fn insert(v: K, v: V) -> bool; /// Returns true if the map contains a value for the specified key fn contains_key(key: K) -> bool; @@ -59,7 +58,7 @@ pub trait Map { fn clear(); /// Iterate over all the key/value pairs in the map by value - pure fn each(fn(key: K, +value: V) -> bool); + pure fn each(fn(key: K, value: V) -> bool); /// Iterate over all the keys in the map by value pure fn each_key(fn(key: K) -> bool); @@ -213,7 +212,7 @@ pub mod chained { } } - fn insert(k: K, +v: V) -> bool { + fn insert(k: K, v: V) -> bool { let hash = k.hash_keyed(0,0) as uint; match self.search_tbl(&k, hash) { NotFound => { @@ -294,7 +293,7 @@ pub mod chained { self.chains = chains(initial_capacity); } - pure fn each(blk: fn(key: K, +value: V) -> bool) { + pure fn each(blk: fn(key: K, value: V) -> bool) { self.each_ref(|k, v| blk(*k, *v)) } @@ -348,7 +347,7 @@ pub mod chained { } impl T: ops::Index { - pure fn index(+k: K) -> V { + pure fn index(k: K) -> V { unsafe { self.get(k) } @@ -459,7 +458,7 @@ impl @Mut>: } } - pure fn each(op: fn(key: K, +value: V) -> bool) { + pure fn each(op: fn(key: K, value: V) -> bool) { unsafe { do self.borrow_imm |p| { p.each(|k, v| op(*k, *v)) diff --git a/src/libstd/net_tcp.rs b/src/libstd/net_tcp.rs index 8c95410d4e8..1027acfb569 100644 --- a/src/libstd/net_tcp.rs +++ b/src/libstd/net_tcp.rs @@ -1,4 +1,5 @@ //! High-level interface to libuv's TCP functionality +#[warn(deprecated_mode)]; use ip = net_ip; use uv::iotask; @@ -324,7 +325,7 @@ pub fn read_start(sock: &TcpSocket) * * `sock` - a `net::tcp::tcp_socket` that you wish to stop reading on */ pub fn read_stop(sock: &TcpSocket, - +read_port: comm::Port>) -> + read_port: comm::Port>) -> result::Result<(), TcpErrData> unsafe { log(debug, fmt!("taking the read_port out of commission %?", read_port)); let socket_data = ptr::addr_of(&(*sock.socket_data)); @@ -558,8 +559,8 @@ pub fn accept(new_conn: TcpNewConnection) */ pub fn listen(host_ip: ip::IpAddr, port: uint, backlog: uint, iotask: IoTask, - +on_establish_cb: fn~(comm::Chan>), - +new_connect_cb: fn~(TcpNewConnection, + on_establish_cb: fn~(comm::Chan>), + new_connect_cb: fn~(TcpNewConnection, comm::Chan>)) -> result::Result<(), TcpListenErrData> unsafe { do listen_common(move host_ip, port, backlog, iotask, on_establish_cb) @@ -575,8 +576,8 @@ pub fn listen(host_ip: ip::IpAddr, port: uint, backlog: uint, fn listen_common(host_ip: ip::IpAddr, port: uint, backlog: uint, iotask: IoTask, - +on_establish_cb: fn~(comm::Chan>), - +on_connect_cb: fn~(*uv::ll::uv_tcp_t)) + on_establish_cb: fn~(comm::Chan>), + on_connect_cb: fn~(*uv::ll::uv_tcp_t)) -> result::Result<(), TcpListenErrData> unsafe { let stream_closed_po = core::comm::Port::<()>(); let kill_po = core::comm::Port::>(); @@ -749,7 +750,7 @@ impl TcpSocket { /// Implementation of `io::reader` trait for a buffered `net::tcp::tcp_socket` impl TcpSocketBuf: io::Reader { - fn read(buf: &[mut u8], +len: uint) -> uint { + fn read(buf: &[mut u8], len: uint) -> uint { // Loop until our buffer has enough data in it for us to read from. while self.data.buf.len() < len { let read_result = read(&self.data.sock, 0u); @@ -785,13 +786,13 @@ impl TcpSocketBuf: io::Reader { let mut bytes = ~[0]; if self.read(bytes, 1u) == 0 { fail } else { bytes[0] as int } } - fn unread_byte(+amt: int) { + fn unread_byte(amt: int) { self.data.buf.unshift(amt as u8); } fn eof() -> bool { false // noop } - fn seek(+dist: int, +seek: io::SeekStyle) { + fn seek(dist: int, seek: io::SeekStyle) { log(debug, fmt!("tcp_socket_buf seek stub %? %?", dist, seek)); // noop } @@ -813,7 +814,7 @@ impl TcpSocketBuf: io::Writer { err_data.err_name, err_data.err_msg)); } } - fn seek(+dist: int, +seek: io::SeekStyle) { + fn seek(dist: int, seek: io::SeekStyle) { log(debug, fmt!("tcp_socket_buf seek stub %? %?", dist, seek)); // noop } @@ -1474,7 +1475,7 @@ mod test { str::from_bytes(new_bytes) } - fn run_tcp_test_server(server_ip: &str, server_port: uint, +resp: ~str, + fn run_tcp_test_server(server_ip: &str, server_port: uint, resp: ~str, server_ch: comm::Chan<~str>, cont_ch: comm::Chan<()>, iotask: IoTask) -> ~str { diff --git a/src/libstd/net_url.rs b/src/libstd/net_url.rs index 40c9f96f5e8..0ab4d89f363 100644 --- a/src/libstd/net_url.rs +++ b/src/libstd/net_url.rs @@ -1,5 +1,5 @@ //! Types/fns concerning URLs (see RFC 3986) -// tjc: forbid deprecated modes again after a snapshot +#[forbid(deprecated_mode)]; use core::cmp::Eq; use map::HashMap; @@ -27,15 +27,15 @@ type UserInfo = { pub type Query = ~[(~str, ~str)]; -pub fn Url(scheme: ~str, +user: Option, +host: ~str, - +port: Option<~str>, +path: ~str, +query: Query, - +fragment: Option<~str>) -> Url { +pub fn Url(scheme: ~str, user: Option, host: ~str, + port: Option<~str>, path: ~str, query: Query, + fragment: Option<~str>) -> Url { Url { scheme: move scheme, user: move user, host: move host, port: move port, path: move path, query: move query, fragment: move fragment } } -fn UserInfo(user: ~str, +pass: Option<~str>) -> UserInfo { +fn UserInfo(user: ~str, pass: Option<~str>) -> UserInfo { {user: move user, pass: move pass} } @@ -726,7 +726,7 @@ impl Url : Eq { } impl Url: IterBytes { - pure fn iter_bytes(+lsb0: bool, f: to_bytes::Cb) { + pure fn iter_bytes(lsb0: bool, f: to_bytes::Cb) { unsafe { self.to_str() }.iter_bytes(lsb0, f) } } diff --git a/src/libstd/par.rs b/src/libstd/par.rs index 65e41dba5d8..e5336b7204d 100644 --- a/src/libstd/par.rs +++ b/src/libstd/par.rs @@ -1,3 +1,5 @@ +#[forbid(deprecated_mode)]; + use future_spawn = future::spawn; @@ -72,7 +74,7 @@ fn map_slices( } /// A parallel version of map. -pub fn map(xs: &[A], +f: fn~((&A)) -> B) -> ~[B] { +pub fn map(xs: &[A], f: fn~((&A)) -> B) -> ~[B] { vec::concat(map_slices(xs, || { fn~(_base: uint, slice : &[A], copy f) -> ~[B] { vec::map(slice, |x| f(x)) @@ -82,7 +84,7 @@ pub fn map(xs: &[A], +f: fn~((&A)) -> B) -> ~[B] { /// A parallel version of mapi. pub fn mapi(xs: &[A], - +f: fn~(uint, (&A)) -> B) -> ~[B] { + f: fn~(uint, (&A)) -> B) -> ~[B] { let slices = map_slices(xs, || { fn~(base: uint, slice : &[A], copy f) -> ~[B] { vec::mapi(slice, |i, x| { @@ -119,7 +121,7 @@ pub fn mapi_factory( } /// Returns true if the function holds for all elements in the vector. -pub fn alli(xs: &[A], +f: fn~(uint, (&A)) -> bool) -> bool { +pub fn alli(xs: &[A], f: fn~(uint, (&A)) -> bool) -> bool { do vec::all(map_slices(xs, || { fn~(base: uint, slice : &[A], copy f) -> bool { vec::alli(slice, |i, x| { @@ -130,7 +132,7 @@ pub fn alli(xs: &[A], +f: fn~(uint, (&A)) -> bool) -> bool { } /// Returns true if the function holds for any elements in the vector. -pub fn any(xs: &[A], +f: fn~(&(A)) -> bool) -> bool { +pub fn any(xs: &[A], f: fn~(&(A)) -> bool) -> bool { do vec::any(map_slices(xs, || { fn~(_base : uint, slice: &[A], copy f) -> bool { vec::any(slice, |x| f(x)) diff --git a/src/libstd/smallintmap.rs b/src/libstd/smallintmap.rs index 58ecbb0d6c3..1582d90ce2d 100644 --- a/src/libstd/smallintmap.rs +++ b/src/libstd/smallintmap.rs @@ -2,7 +2,7 @@ * A simple map based on a vector for small integer keys. Space requirements * are O(highest integer key). */ -// tjc: forbid deprecated modes again after snap +#[forbid(deprecated_mode)]; use core::option; use core::option::{Some, None}; @@ -103,7 +103,7 @@ impl SmallIntMap: map::Map { pure fn find(key: uint) -> Option { find(self, key) } fn rehash() { fail } - pure fn each(it: fn(key: uint, +value: V) -> bool) { + pure fn each(it: fn(key: uint, value: V) -> bool) { self.each_ref(|k, v| it(*k, *v)) } pure fn each_key(it: fn(key: uint) -> bool) { @@ -131,7 +131,7 @@ impl SmallIntMap: map::Map { } impl SmallIntMap: ops::Index { - pure fn index(+key: uint) -> V { + pure fn index(key: uint) -> V { unsafe { get(self, key) } diff --git a/src/libstd/std.rc b/src/libstd/std.rc index 7622f1b8de6..cc076772e6e 100644 --- a/src/libstd/std.rc +++ b/src/libstd/std.rc @@ -20,6 +20,7 @@ not required in or otherwise suitable for the core library. #[allow(vecs_implicitly_copyable)]; #[deny(non_camel_case_types)]; +#[warn(deprecated_mode)]; #[forbid(deprecated_pattern)]; extern mod core(vers = "0.4"); diff --git a/src/libstd/sync.rs b/src/libstd/sync.rs index 88869773e5d..908f3936f4e 100644 --- a/src/libstd/sync.rs +++ b/src/libstd/sync.rs @@ -1,5 +1,5 @@ // NB: transitionary, de-mode-ing. -// tjc: forbid deprecated modes again after snap +#[forbid(deprecated_mode)]; /** * The concurrency primitives you know and love. * diff --git a/src/libstd/test.rs b/src/libstd/test.rs index 2eac3729c22..162a5ecc5fc 100644 --- a/src/libstd/test.rs +++ b/src/libstd/test.rs @@ -5,7 +5,7 @@ // simplest interface possible for representing and running tests // while providing a base that other test frameworks may build off of. -#[warn(deprecated_mode)]; +#[forbid(deprecated_mode)]; use core::cmp::Eq; use either::Either; diff --git a/src/libstd/time.rs b/src/libstd/time.rs index aef3bb2ac0a..627a3b8eeae 100644 --- a/src/libstd/time.rs +++ b/src/libstd/time.rs @@ -1,4 +1,4 @@ -// tjc: forbid deprecated modes again after snap +#[forbid(deprecated_mode)]; use core::cmp::Eq; use libc::{c_char, c_int, c_long, size_t, time_t}; diff --git a/src/libstd/timer.rs b/src/libstd/timer.rs index 821015edd1a..c9c28c4e1f0 100644 --- a/src/libstd/timer.rs +++ b/src/libstd/timer.rs @@ -1,6 +1,6 @@ //! Utilities that leverage libuv's `uv_timer_*` API -// tjc: forbid deprecated modes again after snap +#[forbid(deprecated_mode)]; use uv = uv; use uv::iotask; diff --git a/src/libstd/treemap.rs b/src/libstd/treemap.rs index 184dfd36279..8ab0dc7f2e7 100644 --- a/src/libstd/treemap.rs +++ b/src/libstd/treemap.rs @@ -5,7 +5,7 @@ * very naive algorithm, but it will probably be updated to be a * red-black tree or something else. */ -#[warn(deprecated_mode)]; +#[forbid(deprecated_mode)]; use core::cmp::{Eq, Ord}; use core::option::{Some, None}; @@ -26,7 +26,7 @@ enum TreeNode = { pub fn TreeMap() -> TreeMap { @mut None } /// Insert a value into the map -pub fn insert(m: &mut TreeEdge, +k: K, +v: V) { +pub fn insert(m: &mut TreeEdge, k: K, v: V) { match copy *m { None => { *m = Some(@TreeNode({key: k, @@ -48,7 +48,7 @@ pub fn insert(m: &mut TreeEdge, +k: K, +v: V) { } /// Find a value based on the key -pub fn find(m: &const TreeEdge, +k: K) +pub fn find(m: &const TreeEdge, k: K) -> Option { match copy *m { None => None, @@ -121,7 +121,7 @@ mod tests { insert(m, 1, ()); let n = @mut 0; - fn t(n: @mut int, +k: int, +_v: ()) { + fn t(n: @mut int, k: int, _v: ()) { assert (*n == k); *n += 1; } traverse(m, |x,y| t(n, *x, *y)); diff --git a/src/libstd/uv_iotask.rs b/src/libstd/uv_iotask.rs index 2e31e15a70d..ad40d96e4f7 100644 --- a/src/libstd/uv_iotask.rs +++ b/src/libstd/uv_iotask.rs @@ -4,8 +4,7 @@ * The I/O task runs in its own single-threaded scheduler. By using the * `interact` function you can execute code in a uv callback. */ - -// tjc: forbid deprecated modes again after a snapshot +#[forbid(deprecated_mode)]; use libc::c_void; use ptr::addr_of; @@ -60,7 +59,7 @@ pub fn spawn_iotask(task: task::TaskBuilder) -> IoTask { * via ports/chans. */ pub unsafe fn interact(iotask: IoTask, - +cb: fn~(*c_void)) { + cb: fn~(*c_void)) { send_msg(iotask, Interaction(move cb)); } @@ -125,7 +124,7 @@ type IoTaskLoopData = { }; fn send_msg(iotask: IoTask, - +msg: IoTaskMsg) unsafe { + msg: IoTaskMsg) unsafe { iotask.op_chan.send(move msg); ll::async_send(iotask.async_handle); } diff --git a/src/libstd/uv_ll.rs b/src/libstd/uv_ll.rs index f8c3882d15e..8b428d8d6d8 100644 --- a/src/libstd/uv_ll.rs +++ b/src/libstd/uv_ll.rs @@ -19,7 +19,7 @@ * This module's implementation will hopefully be, eventually, replaced * with per-platform, generated source files from rust-bindgen. */ - +#[warn(deprecated_mode)]; #[allow(non_camel_case_types)]; // C types use libc::size_t; @@ -642,7 +642,7 @@ extern mod rustrt { fn rust_uv_addrinfo_as_sockaddr_in(input: *addrinfo) -> *sockaddr_in; fn rust_uv_addrinfo_as_sockaddr_in6(input: *addrinfo) -> *sockaddr_in6; fn rust_uv_malloc_buf_base_of(sug_size: libc::size_t) -> *u8; - fn rust_uv_free_base_of_buf(++buf: uv_buf_t); + fn rust_uv_free_base_of_buf(+buf: uv_buf_t); fn rust_uv_get_stream_handle_from_connect_req( connect_req: *uv_connect_t) -> *uv_stream_t; @@ -661,8 +661,8 @@ extern mod rustrt { fn rust_uv_get_data_for_req(req: *libc::c_void) -> *libc::c_void; fn rust_uv_set_data_for_req(req: *libc::c_void, data: *libc::c_void); - fn rust_uv_get_base_from_buf(++buf: uv_buf_t) -> *u8; - fn rust_uv_get_len_from_buf(++buf: uv_buf_t) -> libc::size_t; + fn rust_uv_get_base_from_buf(+buf: uv_buf_t) -> *u8; + fn rust_uv_get_len_from_buf(+buf: uv_buf_t) -> libc::size_t; // sizeof testing helpers fn rust_uv_helper_uv_tcp_t_size() -> libc::c_uint; @@ -1357,8 +1357,8 @@ pub mod test { fn impl_uv_tcp_server(server_ip: &str, server_port: int, - +kill_server_msg: ~str, - +server_resp_msg: ~str, + kill_server_msg: ~str, + server_resp_msg: ~str, server_chan: *comm::Chan<~str>, continue_chan: *comm::Chan) unsafe { let test_loop = loop_new(); diff --git a/src/libsyntax/ext/pipes/ast_builder.rs b/src/libsyntax/ext/pipes/ast_builder.rs index bfe0f4dd0e6..4da9992b0dd 100644 --- a/src/libsyntax/ext/pipes/ast_builder.rs +++ b/src/libsyntax/ext/pipes/ast_builder.rs @@ -48,7 +48,6 @@ trait ext_ctxt_ast_builder { fn ty_param(id: ast::ident, +bounds: ~[ast::ty_param_bound]) -> ast::ty_param; fn arg(name: ident, ty: @ast::ty) -> ast::arg; - fn arg_mode(name: ident, ty: @ast::ty, mode: ast::rmode) -> ast::arg; fn expr_block(e: @ast::expr) -> ast::blk; fn fn_decl(+inputs: ~[ast::arg], output: @ast::ty) -> ast::fn_decl; fn item(name: ident, span: span, +node: ast::item_) -> @ast::item; @@ -177,13 +176,6 @@ impl ext_ctxt: ext_ctxt_ast_builder { id: self.next_id()} } - fn arg_mode(name: ident, ty: @ast::ty, mode: ast::rmode) -> ast::arg { - {mode: ast::expl(mode), - ty: ty, - ident: name, - id: self.next_id()} - } - fn block(+stmts: ~[@ast::stmt], e: @ast::expr) -> ast::blk { let blk = {view_items: ~[], stmts: stmts, diff --git a/src/libsyntax/ext/pipes/pipec.rs b/src/libsyntax/ext/pipes/pipec.rs index 9c10d228a23..874ea01e9b0 100644 --- a/src/libsyntax/ext/pipes/pipec.rs +++ b/src/libsyntax/ext/pipes/pipec.rs @@ -47,16 +47,15 @@ impl message: gen_send { let arg_names = tys.mapi(|i, _ty| cx.ident_of(~"x_"+i.to_str())); let args_ast = (arg_names, tys).map( - |n, t| cx.arg_mode(*n, *t, ast::by_copy) + |n, t| cx.arg(*n, *t) ); let pipe_ty = cx.ty_path_ast_builder( path(~[this.data_name()], span) .add_tys(cx.ty_vars(this.ty_params))); let args_ast = vec::append( - ~[cx.arg_mode(cx.ident_of(~"pipe"), - pipe_ty, - ast::by_copy)], + ~[cx.arg(cx.ident_of(~"pipe"), + pipe_ty)], args_ast); let mut body = ~"{\n"; @@ -129,15 +128,14 @@ impl message: gen_send { let arg_names = tys.mapi(|i, _ty| (~"x_" + i.to_str())); let args_ast = (arg_names, tys).map( - |n, t| cx.arg_mode(cx.ident_of(*n), *t, ast::by_copy) + |n, t| cx.arg(cx.ident_of(*n), *t) ); let args_ast = vec::append( - ~[cx.arg_mode(cx.ident_of(~"pipe"), + ~[cx.arg(cx.ident_of(~"pipe"), cx.ty_path_ast_builder( path(~[this.data_name()], span) - .add_tys(cx.ty_vars(this.ty_params))), - ast::by_copy)], + .add_tys(cx.ty_vars(this.ty_params))))], args_ast); let message_args = if arg_names.len() == 0 { diff --git a/src/rustc/driver/rustc.rs b/src/rustc/driver/rustc.rs index c2bca3fc6be..c60904419d5 100644 --- a/src/rustc/driver/rustc.rs +++ b/src/rustc/driver/rustc.rs @@ -22,15 +22,15 @@ use syntax::diagnostic; use rustc::driver::session; use rustc::middle::lint; -fn version(argv0: ~str) { +fn version(argv0: &str) { let mut vers = ~"unknown version"; let env_vers = env!("CFG_VERSION"); - if str::len(env_vers) != 0u { vers = env_vers; } + if env_vers.len() != 0 { vers = env_vers; } io::println(fmt!("%s %s", argv0, vers)); io::println(fmt!("host: %s", host_triple())); } -fn usage(argv0: ~str) { +fn usage(argv0: &str) { io::println(fmt!("Usage: %s [options] \n", argv0) + ~" Options: @@ -86,7 +86,7 @@ fn describe_warnings() { let lint_dict = lint::get_lint_dict(); let mut max_key = 0; for lint_dict.each_key |k| { max_key = uint::max(k.len(), max_key); } - fn padded(max: uint, s: ~str) -> ~str { + fn padded(max: uint, s: &str) -> ~str { str::from_bytes(vec::from_elem(max - s.len(), ' ' as u8)) + s } io::println(fmt!("\nAvailable lint checks:\n")); @@ -117,14 +117,14 @@ fn describe_debug_flags() { } } -fn run_compiler(args: ~[~str], demitter: diagnostic::emitter) { +fn run_compiler(args: &~[~str], demitter: diagnostic::emitter) { // Don't display log spew by default. Can override with RUST_LOG. logging::console_off(); - let mut args = args; + let mut args = *args; let binary = args.shift(); - if vec::len(args) == 0u { usage(binary); return; } + if args.is_empty() { usage(binary); return; } let matches = match getopts::getopts(args, opts()) { @@ -278,9 +278,9 @@ fn monitor(+f: fn~(diagnostic::emitter)) { } fn main() { - let args = os::args(); - do monitor |demitter| { - run_compiler(args, demitter); + let mut args = os::args(); + do monitor |move args, demitter| { + run_compiler(&args, demitter); } } diff --git a/src/test/bench/task-perf-word-count-generic.rs b/src/test/bench/task-perf-word-count-generic.rs index 168e4b8b1f1..97b031c6024 100644 --- a/src/test/bench/task-perf-word-count-generic.rs +++ b/src/test/bench/task-perf-word-count-generic.rs @@ -10,8 +10,6 @@ // xfail-pretty -#[legacy_modes]; - extern mod std; use option = option; @@ -70,18 +68,18 @@ fn map(f: fn~() -> word_reader, emit: map_reduce::putter<~str, int>) { let f = f(); loop { match f.read_word() { - Some(w) => { emit(w, 1); } + Some(w) => { emit(&w, 1); } None => { break; } } } } -fn reduce(&&word: ~str, get: map_reduce::getter) { +fn reduce(word: &~str, get: map_reduce::getter) { let mut count = 0; loop { match get() { Some(_) => { count += 1; } None => { break; } } } - io::println(fmt!("%s\t%?", word, count)); + io::println(fmt!("%s\t%?", *word, count)); } struct box { @@ -116,13 +114,13 @@ mod map_reduce { export reducer; export map_reduce; - type putter = fn(K, V); + type putter = fn(&K, V); type mapper = fn~(K1, putter); type getter = fn() -> Option; - type reducer = fn~(K, getter); + type reducer = fn~(&K, getter); enum ctrl_proto { find_reducer(K, Chan>>), @@ -145,9 +143,9 @@ mod map_reduce { fn start_mappers( - map: mapper, + map: &mapper, &ctrls: ~[ctrl_proto::server::open], - inputs: ~[K1]) + inputs: &~[K1]) -> ~[joinable_task] { let mut tasks = ~[]; @@ -155,7 +153,8 @@ mod map_reduce { let (ctrl, ctrl_server) = ctrl_proto::init(); let ctrl = box(ctrl); let i = copy *i; - tasks.push(spawn_joinable(|move i| map_task(map, ctrl, i))); + let m = copy *map; + tasks.push(spawn_joinable(|move i| map_task(m, &ctrl, i))); ctrls.push(ctrl_server); } return tasks; @@ -163,20 +162,22 @@ mod map_reduce { fn map_task( map: mapper, - ctrl: box>, + ctrl: &box>, input: K1) { // log(error, "map_task " + input); - let intermediates = map::HashMap(); + let intermediates: HashMap>> + = map::HashMap(); - do map(input) |key, val| { + do map(input) |key: &K2, val| { let mut c = None; - let found = intermediates.find(key); + let found: Option>> + = intermediates.find(*key); match found { Some(_c) => { c = Some(_c); } None => { do ctrl.swap |ctrl| { - let ctrl = ctrl_proto::client::find_reducer(ctrl, key); + let ctrl = ctrl_proto::client::find_reducer(ctrl, *key); match pipes::recv(ctrl) { ctrl_proto::reducer(c_, ctrl) => { c = Some(c_); @@ -184,7 +185,7 @@ mod map_reduce { } } } - intermediates.insert(key, c.get()); + intermediates.insert(*key, c.get()); send(c.get(), addref); } } @@ -200,7 +201,7 @@ mod map_reduce { } fn reduce_task( - reduce: reducer, + reduce: ~reducer, key: K, out: Chan>>) { @@ -231,7 +232,7 @@ mod map_reduce { return None; } - reduce(key, || get(p, ref_count, is_done) ); + (*reduce)(&key, || get(p, ref_count, is_done) ); } fn map_reduce( @@ -245,7 +246,7 @@ mod map_reduce { // to do the rest. let reducers = map::HashMap(); - let mut tasks = start_mappers(map, ctrl, inputs); + let mut tasks = start_mappers(&map, ctrl, &inputs); let mut num_mappers = vec::len(inputs) as int; while num_mappers > 0 { @@ -270,7 +271,7 @@ mod map_reduce { let p = Port(); let ch = Chan(&p); let r = reduce, kk = k; - tasks.push(spawn_joinable(|| reduce_task(r, kk, ch) )); + tasks.push(spawn_joinable(|| reduce_task(~r, kk, ch) )); c = recv(p); reducers.insert(k, c); } -- cgit 1.4.1-3-g733a5 From ba75a3e14c8ffe85c0ac0a81a31affff1d678834 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Fri, 5 Oct 2012 11:32:00 -0700 Subject: std: Revert demoding of uv_ll. It can't be done without FFI changes --- src/libstd/uv_ll.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/uv_ll.rs b/src/libstd/uv_ll.rs index 8b428d8d6d8..f8c3882d15e 100644 --- a/src/libstd/uv_ll.rs +++ b/src/libstd/uv_ll.rs @@ -19,7 +19,7 @@ * This module's implementation will hopefully be, eventually, replaced * with per-platform, generated source files from rust-bindgen. */ -#[warn(deprecated_mode)]; + #[allow(non_camel_case_types)]; // C types use libc::size_t; @@ -642,7 +642,7 @@ extern mod rustrt { fn rust_uv_addrinfo_as_sockaddr_in(input: *addrinfo) -> *sockaddr_in; fn rust_uv_addrinfo_as_sockaddr_in6(input: *addrinfo) -> *sockaddr_in6; fn rust_uv_malloc_buf_base_of(sug_size: libc::size_t) -> *u8; - fn rust_uv_free_base_of_buf(+buf: uv_buf_t); + fn rust_uv_free_base_of_buf(++buf: uv_buf_t); fn rust_uv_get_stream_handle_from_connect_req( connect_req: *uv_connect_t) -> *uv_stream_t; @@ -661,8 +661,8 @@ extern mod rustrt { fn rust_uv_get_data_for_req(req: *libc::c_void) -> *libc::c_void; fn rust_uv_set_data_for_req(req: *libc::c_void, data: *libc::c_void); - fn rust_uv_get_base_from_buf(+buf: uv_buf_t) -> *u8; - fn rust_uv_get_len_from_buf(+buf: uv_buf_t) -> libc::size_t; + fn rust_uv_get_base_from_buf(++buf: uv_buf_t) -> *u8; + fn rust_uv_get_len_from_buf(++buf: uv_buf_t) -> libc::size_t; // sizeof testing helpers fn rust_uv_helper_uv_tcp_t_size() -> libc::c_uint; @@ -1357,8 +1357,8 @@ pub mod test { fn impl_uv_tcp_server(server_ip: &str, server_port: int, - kill_server_msg: ~str, - server_resp_msg: ~str, + +kill_server_msg: ~str, + +server_resp_msg: ~str, server_chan: *comm::Chan<~str>, continue_chan: *comm::Chan) unsafe { let test_loop = loop_new(); -- cgit 1.4.1-3-g733a5 From e46e97fc9a6bb6485e87659ea968fac8c4d05a9f Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Fri, 5 Oct 2012 11:53:09 -0700 Subject: Silence most of the remaining warnings --- src/libcore/stackwalk.rs | 4 ++-- src/libstd/net_tcp.rs | 3 ++- src/libstd/serialization.rs | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src/libstd') diff --git a/src/libcore/stackwalk.rs b/src/libcore/stackwalk.rs index 09973148c8c..a88a44701ce 100644 --- a/src/libcore/stackwalk.rs +++ b/src/libcore/stackwalk.rs @@ -3,8 +3,8 @@ #[legacy_modes]; // tjc: remove after snapshot // NB: transitionary, de-mode-ing. -// XXX: Can't do this because frame_address needs a deprecated mode. -//#[forbid(deprecated_mode)]; +// XXX: Can't forbid this because frame_address needs a deprecated mode. +#[allow(deprecated_mode)]; #[forbid(deprecated_pattern)]; use cast::reinterpret_cast; diff --git a/src/libstd/net_tcp.rs b/src/libstd/net_tcp.rs index 1027acfb569..249551fbb7d 100644 --- a/src/libstd/net_tcp.rs +++ b/src/libstd/net_tcp.rs @@ -1,5 +1,6 @@ //! High-level interface to libuv's TCP functionality -#[warn(deprecated_mode)]; +// XXX Need FFI fixes +#[allow(deprecated_mode)]; use ip = net_ip; use uv::iotask; diff --git a/src/libstd/serialization.rs b/src/libstd/serialization.rs index 269027a80e5..8ba00e65dec 100644 --- a/src/libstd/serialization.rs +++ b/src/libstd/serialization.rs @@ -1,5 +1,7 @@ //! Support code for serialization. +#[allow(deprecated_mode)]; + /* Core serialization interfaces. */ -- cgit 1.4.1-3-g733a5 From 016875b1b18b8d96a9e48ade55ce6d3ae7fd3680 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Fri, 5 Oct 2012 11:59:51 -0700 Subject: std: Silence remaining warnings --- src/libstd/std.rc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/libstd') diff --git a/src/libstd/std.rc b/src/libstd/std.rc index cc076772e6e..7fc3004bbcf 100644 --- a/src/libstd/std.rc +++ b/src/libstd/std.rc @@ -20,7 +20,9 @@ not required in or otherwise suitable for the core library. #[allow(vecs_implicitly_copyable)]; #[deny(non_camel_case_types)]; -#[warn(deprecated_mode)]; +// XXX this is set to allow because there are two methods in serialization +// that can't be silenced otherwise. Most every module is set to forbid +#[allow(deprecated_mode)]; #[forbid(deprecated_pattern)]; extern mod core(vers = "0.4"); -- cgit 1.4.1-3-g733a5 From e16dbb7888504ef5d0de0c14493fc8ecc492ee30 Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Fri, 5 Oct 2012 14:58:42 -0700 Subject: Demode some code using by-mutbl-ref; warn about by-mutbl-ref The parser now warns about use of mutbl-ref mode, though it's kind of a lie since this commit doesn't remove support for the mode. Changed move_val_init to have stage0 and stage1/2 versions, the latter of which is demoded. Changed the type that the typechecker expects the move_val_init intrinsic to have. After this is pushed, I can make a new snapshot, which will remove the need for the stage0 versions. --- src/libcore/at_vec.rs | 18 ++++ src/libcore/vec.rs | 49 +++++++++- src/libstd/arena.rs | 115 +++++++++++++++++++++++ src/libsyntax/parse/parser.rs | 1 + src/rustc/middle/typeck/check.rs | 4 +- src/test/compile-fail/borrowck-lend-args.rs | 4 +- src/test/compile-fail/deprecated-mode-fn-arg.rs | 2 + src/test/compile-fail/issue-511.rs | 6 +- src/test/compile-fail/liveness-dead.rs | 4 +- src/test/compile-fail/liveness-move-from-args.rs | 4 - src/test/compile-fail/liveness-unused.rs | 2 +- src/test/compile-fail/mutable-arguments.rs | 12 +-- src/test/run-pass/intrinsic-move-val.rs | 6 +- 13 files changed, 204 insertions(+), 23 deletions(-) (limited to 'src/libstd') diff --git a/src/libcore/at_vec.rs b/src/libcore/at_vec.rs index 5e1111c20d3..8c023a7cb4c 100644 --- a/src/libcore/at_vec.rs +++ b/src/libcore/at_vec.rs @@ -21,7 +21,11 @@ extern mod rustrt { #[abi = "rust-intrinsic"] extern mod rusti { #[legacy_exports]; + #[cfg(stage0)] fn move_val_init(&dst: T, -src: T); + #[cfg(stage1)] + #[cfg(stage2)] + fn move_val_init(dst: &mut T, -src: T); } /// Returns the number of elements the vector can hold without reallocating @@ -176,7 +180,9 @@ pub mod raw { push_slow(v, move initval); } } + // This doesn't bother to make sure we have space. + #[cfg(stage0)] #[inline(always)] // really pretty please pub unsafe fn push_fast(v: &mut @[const T], initval: T) { let repr: **VecRepr = ::cast::reinterpret_cast(&v); @@ -186,6 +192,18 @@ pub mod raw { let p = ptr::offset(p, fill) as *mut T; rusti::move_val_init(*p, move initval); } + // This doesn't bother to make sure we have space. + #[cfg(stage1)] + #[cfg(stage2)] + #[inline(always)] // really pretty please + pub unsafe fn push_fast(v: &mut @[const T], initval: T) { + let repr: **VecRepr = ::cast::reinterpret_cast(&v); + let fill = (**repr).unboxed.fill; + (**repr).unboxed.fill += sys::size_of::(); + let p = addr_of(&((**repr).unboxed.data)); + let p = ptr::offset(p, fill) as *mut T; + rusti::move_val_init(&mut(*p), move initval); + } pub unsafe fn push_slow(v: &mut @[const T], initval: T) { reserve_at_least(v, v.len() + 1u); diff --git a/src/libcore/vec.rs b/src/libcore/vec.rs index a157071c955..ce1193aa730 100644 --- a/src/libcore/vec.rs +++ b/src/libcore/vec.rs @@ -18,9 +18,14 @@ extern mod rustrt { #[abi = "rust-intrinsic"] extern mod rusti { + #[cfg(stage0)] fn move_val_init(&dst: T, -src: T); + #[cfg(stage1)] + #[cfg(stage2)] + fn move_val_init(dst: &mut T, -src: T); } + /// Returns true if a vector contains no elements pub pure fn is_empty(v: &[const T]) -> bool { as_const_buf(v, |_p, len| len == 0u) @@ -98,6 +103,7 @@ pub pure fn len(v: &[const T]) -> uint { * Creates an immutable vector of size `n_elts` and initializes the elements * to the value returned by the function `op`. */ +#[cfg(stage0)] pub pure fn from_fn(n_elts: uint, op: iter::InitOp) -> ~[T] { unsafe { let mut v = with_capacity(n_elts); @@ -112,6 +118,22 @@ pub pure fn from_fn(n_elts: uint, op: iter::InitOp) -> ~[T] { return move v; } } +#[cfg(stage1)] +#[cfg(stage2)] +pub pure fn from_fn(n_elts: uint, op: iter::InitOp) -> ~[T] { + unsafe { + let mut v = with_capacity(n_elts); + do as_mut_buf(v) |p, _len| { + let mut i: uint = 0u; + while i < n_elts { + rusti::move_val_init(&mut(*ptr::mut_offset(p, i)), op(i)); + i += 1u; + } + } + raw::set_len(&mut v, n_elts); + return move v; + } +} /** * Creates and initializes an immutable vector. @@ -481,6 +503,7 @@ pub fn push(v: &mut ~[T], initval: T) { } } +#[cfg(stage0)] // This doesn't bother to make sure we have space. #[inline(always)] // really pretty please unsafe fn push_fast(v: &mut ~[T], initval: T) { @@ -491,6 +514,18 @@ unsafe fn push_fast(v: &mut ~[T], initval: T) { let p = ptr::offset(p, fill) as *mut T; rusti::move_val_init(*p, move initval); } +#[cfg(stage1)] +#[cfg(stage2)] +// This doesn't bother to make sure we have space. +#[inline(always)] // really pretty please +unsafe fn push_fast(v: &mut ~[T], initval: T) { + let repr: **raw::VecRepr = ::cast::transmute(v); + let fill = (**repr).unboxed.fill; + (**repr).unboxed.fill += sys::size_of::(); + let p = addr_of(&((**repr).unboxed.data)); + let p = ptr::offset(p, fill) as *mut T; + rusti::move_val_init(&mut(*p), move initval); +} #[inline(never)] fn push_slow(v: &mut ~[T], initval: T) { @@ -1758,6 +1793,18 @@ pub mod raw { as_const_buf(v, |p, _len| *ptr::const_offset(p, i)) } + #[cfg(stage0)] + #[inline(always)] + pub unsafe fn init_elem(v: &[mut T], i: uint, val: T) { + let mut box = Some(move val); + do as_mut_buf(v) |p, _len| { + let mut box2 = None; + box2 <-> box; + rusti::move_val_init(*ptr::mut_offset(p, i), + option::unwrap(move box2)); + } + } + #[cfg(stage1)] /** * Unchecked vector index assignment. Does not drop the * old value and hence is only suitable when the vector @@ -1769,7 +1816,7 @@ pub mod raw { do as_mut_buf(v) |p, _len| { let mut box2 = None; box2 <-> box; - rusti::move_val_init(*ptr::mut_offset(p, i), + rusti::move_val_init(&mut(*ptr::mut_offset(p, i)), option::unwrap(move box2)); } } diff --git a/src/libstd/arena.rs b/src/libstd/arena.rs index 4d2b910fa85..69478b3e731 100644 --- a/src/libstd/arena.rs +++ b/src/libstd/arena.rs @@ -31,9 +31,14 @@ use libc::size_t; #[abi = "rust-intrinsic"] extern mod rusti { + #[cfg(stage0)] fn move_val_init(&dst: T, -src: T); + #[cfg(stage1)] + #[cfg(stage2)] + fn move_val_init(dst: &mut T, -src: T); fn needs_drop() -> bool; } + extern mod rustrt { #[rust_stack] fn rust_call_tydesc_glue(root: *u8, tydesc: *TypeDesc, field: size_t); @@ -127,6 +132,8 @@ unsafe fn un_bitpack_tydesc_ptr(p: uint) -> (*TypeDesc, bool) { (reinterpret_cast(&(p & !1)), p & 1 == 1) } +// tjc: Can get rid of the duplication post-snapshot +#[cfg(stage0)] // The duplication between the POD and non-POD functions is annoying. impl &Arena { // Functions for the POD part of the arena @@ -234,6 +241,114 @@ impl &Arena { } else { self.alloc_nonpod(op) } } } +#[cfg(stage1)] +#[cfg(stage2)] +impl &Arena { + // Functions for the POD part of the arena + fn alloc_pod_grow(n_bytes: uint, align: uint) -> *u8 { + // Allocate a new chunk. + let chunk_size = at_vec::capacity(self.pod_head.data); + let new_min_chunk_size = uint::max(n_bytes, chunk_size); + self.chunks = @Cons(copy self.pod_head, self.chunks); + self.pod_head = + chunk(uint::next_power_of_two(new_min_chunk_size + 1u), true); + + return self.alloc_pod_inner(n_bytes, align); + } + + #[inline(always)] + fn alloc_pod_inner(n_bytes: uint, align: uint) -> *u8 { + let head = &mut self.pod_head; + + let start = round_up_to(head.fill, align); + let end = start + n_bytes; + if end > at_vec::capacity(head.data) { + return self.alloc_pod_grow(n_bytes, align); + } + head.fill = end; + + //debug!("idx = %u, size = %u, align = %u, fill = %u", + // start, n_bytes, align, head.fill); + + unsafe { + ptr::offset(vec::raw::to_ptr(head.data), start) + } + } + + #[inline(always)] + fn alloc_pod(op: fn() -> T) -> &self/T { + unsafe { + let tydesc = sys::get_type_desc::(); + let ptr = self.alloc_pod_inner((*tydesc).size, (*tydesc).align); + let ptr: *mut T = reinterpret_cast(&ptr); + rusti::move_val_init(&mut (*ptr), op()); + return reinterpret_cast(&ptr); + } + } + + // Functions for the non-POD part of the arena + fn alloc_nonpod_grow(n_bytes: uint, align: uint) -> (*u8, *u8) { + // Allocate a new chunk. + let chunk_size = at_vec::capacity(self.head.data); + let new_min_chunk_size = uint::max(n_bytes, chunk_size); + self.chunks = @Cons(copy self.head, self.chunks); + self.head = + chunk(uint::next_power_of_two(new_min_chunk_size + 1u), false); + + return self.alloc_nonpod_inner(n_bytes, align); + } + + #[inline(always)] + fn alloc_nonpod_inner(n_bytes: uint, align: uint) -> (*u8, *u8) { + let head = &mut self.head; + + let tydesc_start = head.fill; + let after_tydesc = head.fill + sys::size_of::<*TypeDesc>(); + let start = round_up_to(after_tydesc, align); + let end = start + n_bytes; + if end > at_vec::capacity(head.data) { + return self.alloc_nonpod_grow(n_bytes, align); + } + head.fill = round_up_to(end, sys::pref_align_of::<*TypeDesc>()); + + //debug!("idx = %u, size = %u, align = %u, fill = %u", + // start, n_bytes, align, head.fill); + + unsafe { + let buf = vec::raw::to_ptr(head.data); + return (ptr::offset(buf, tydesc_start), ptr::offset(buf, start)); + } + } + + #[inline(always)] + fn alloc_nonpod(op: fn() -> T) -> &self/T { + unsafe { + let tydesc = sys::get_type_desc::(); + let (ty_ptr, ptr) = + self.alloc_nonpod_inner((*tydesc).size, (*tydesc).align); + let ty_ptr: *mut uint = reinterpret_cast(&ty_ptr); + let ptr: *mut T = reinterpret_cast(&ptr); + // Write in our tydesc along with a bit indicating that it + // has *not* been initialized yet. + *ty_ptr = reinterpret_cast(&tydesc); + // Actually initialize it + rusti::move_val_init(&mut(*ptr), op()); + // Now that we are done, update the tydesc to indicate that + // the object is there. + *ty_ptr = bitpack_tydesc_ptr(tydesc, true); + + return reinterpret_cast(&ptr); + } + } + + // The external interface + #[inline(always)] + fn alloc(op: fn() -> T) -> &self/T { + if !rusti::needs_drop::() { + self.alloc_pod(op) + } else { self.alloc_nonpod(op) } + } +} #[test] fn test_arena_destructors() { diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 8860d1b5cea..1a87d7fed69 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -570,6 +570,7 @@ impl parser { fn parse_arg_mode() -> mode { if self.eat(token::BINOP(token::AND)) { + self.warn(~"Obsolete syntax has no effect"); expl(by_mutbl_ref) } else if self.eat(token::BINOP(token::MINUS)) { expl(by_move) diff --git a/src/rustc/middle/typeck/check.rs b/src/rustc/middle/typeck/check.rs index 368b69cafab..7cc2c8b0ad7 100644 --- a/src/rustc/middle/typeck/check.rs +++ b/src/rustc/middle/typeck/check.rs @@ -2601,7 +2601,9 @@ fn check_intrinsic_type(ccx: @crate_ctxt, it: @ast::foreign_item) { ~"addr_of" => (1u, ~[arg(ast::by_ref, param(ccx, 0u))], ty::mk_imm_ptr(tcx, param(ccx, 0u))), ~"move_val" | ~"move_val_init" => { - (1u, ~[arg(ast::by_mutbl_ref, param(ccx, 0u)), + (1u, ~[arg(ast::by_copy, + ty::mk_mut_rptr(tcx, ty::re_bound(ty::br_anon(0)), + param(ccx, 0u))), arg(ast::by_move, param(ccx, 0u))], ty::mk_nil(tcx)) } diff --git a/src/test/compile-fail/borrowck-lend-args.rs b/src/test/compile-fail/borrowck-lend-args.rs index 3cb7009ee27..79f52b93612 100644 --- a/src/test/compile-fail/borrowck-lend-args.rs +++ b/src/test/compile-fail/borrowck-lend-args.rs @@ -4,8 +4,8 @@ fn borrow_from_arg_imm_ref(&&v: ~int) { borrow(v); } -fn borrow_from_arg_mut_ref(&v: ~int) { - borrow(v); //~ ERROR illegal borrow unless pure +fn borrow_from_arg_mut_ref(v: &mut ~int) { + borrow(*v); //~ ERROR illegal borrow unless pure //~^ NOTE impure due to access to impure function } diff --git a/src/test/compile-fail/deprecated-mode-fn-arg.rs b/src/test/compile-fail/deprecated-mode-fn-arg.rs index 5afffb59dfc..2c20e604f50 100644 --- a/src/test/compile-fail/deprecated-mode-fn-arg.rs +++ b/src/test/compile-fail/deprecated-mode-fn-arg.rs @@ -1,9 +1,11 @@ #[forbid(deprecated_mode)]; fn foo(_f: fn(&i: int)) { //~ ERROR explicit mode + //~^ WARNING Obsolete syntax has no effect } type Bar = fn(&i: int); //~ ERROR explicit mode + //~^ WARNING Obsolete syntax has no effect fn main() { } \ No newline at end of file diff --git a/src/test/compile-fail/issue-511.rs b/src/test/compile-fail/issue-511.rs index a3498dd1968..02a3082dc10 100644 --- a/src/test/compile-fail/issue-511.rs +++ b/src/test/compile-fail/issue-511.rs @@ -1,11 +1,11 @@ extern mod std; use cmp::Eq; -fn f(&o: Option) { - assert o == option::None; +fn f(o: &mut Option) { + assert *o == option::None; } fn main() { - f::(option::None); + f::(&mut option::None); //~^ ERROR illegal borrow: creating mutable alias to static item } diff --git a/src/test/compile-fail/liveness-dead.rs b/src/test/compile-fail/liveness-dead.rs index a115d7c4e34..834457940be 100644 --- a/src/test/compile-fail/liveness-dead.rs +++ b/src/test/compile-fail/liveness-dead.rs @@ -1,5 +1,5 @@ -fn f1(&x: int) { - x = 1; // no error +fn f1(x: &mut int) { + *x = 1; // no error } fn f2() { diff --git a/src/test/compile-fail/liveness-move-from-args.rs b/src/test/compile-fail/liveness-move-from-args.rs index 27e7e51b405..27e9d3b60dc 100644 --- a/src/test/compile-fail/liveness-move-from-args.rs +++ b/src/test/compile-fail/liveness-move-from-args.rs @@ -4,10 +4,6 @@ fn from_by_value_arg(++x: int) { take(x); //~ ERROR illegal move from argument `x`, which is not copy or move mode } -fn from_by_mut_ref_arg(&x: int) { - take(x); //~ ERROR illegal move from argument `x`, which is not copy or move mode -} - fn from_by_ref_arg(&&x: int) { take(x); //~ ERROR illegal move from argument `x`, which is not copy or move mode } diff --git a/src/test/compile-fail/liveness-unused.rs b/src/test/compile-fail/liveness-unused.rs index 7db02897112..8b2fef7cd35 100644 --- a/src/test/compile-fail/liveness-unused.rs +++ b/src/test/compile-fail/liveness-unused.rs @@ -2,7 +2,7 @@ fn f1(x: int) { //~^ WARNING unused variable: `x` } -fn f1b(&x: int) { +fn f1b(x: &mut int) { //~^ WARNING unused variable: `x` } diff --git a/src/test/compile-fail/mutable-arguments.rs b/src/test/compile-fail/mutable-arguments.rs index 4fcb73e8516..d84c9401e25 100644 --- a/src/test/compile-fail/mutable-arguments.rs +++ b/src/test/compile-fail/mutable-arguments.rs @@ -1,28 +1,28 @@ // Note: it would be nice to give fewer warnings in these cases. -fn mutate_by_mut_ref(&x: uint) { - x = 0u; +fn mutate_by_mut_ref(x: &mut uint) { + *x = 0; } fn mutate_by_ref(&&x: uint) { //~^ WARNING unused variable: `x` - x = 0u; //~ ERROR assigning to argument + x = 0; //~ ERROR assigning to argument } fn mutate_by_val(++x: uint) { //~^ WARNING unused variable: `x` - x = 0u; //~ ERROR assigning to argument + x = 0; //~ ERROR assigning to argument } fn mutate_by_copy(+x: uint) { //~^ WARNING unused variable: `x` - x = 0u; //~ ERROR assigning to argument + x = 0; //~ ERROR assigning to argument //~^ WARNING value assigned to `x` is never read } fn mutate_by_move(-x: uint) { //~^ WARNING unused variable: `x` - x = 0u; //~ ERROR assigning to argument + x = 0; //~ ERROR assigning to argument //~^ WARNING value assigned to `x` is never read } diff --git a/src/test/run-pass/intrinsic-move-val.rs b/src/test/run-pass/intrinsic-move-val.rs index b7f2115f45d..683321aac3d 100644 --- a/src/test/run-pass/intrinsic-move-val.rs +++ b/src/test/run-pass/intrinsic-move-val.rs @@ -1,13 +1,13 @@ #[abi = "rust-intrinsic"] extern mod rusti { #[legacy_exports]; - fn move_val_init(&dst: T, -src: T); - fn move_val(&dst: T, -src: T); + fn move_val_init(dst: &mut T, -src: T); + fn move_val(dst: &mut T, -src: T); } fn main() { let mut x = @1; let mut y = @2; - rusti::move_val(y, x); + rusti::move_val(&mut y, x); assert *y == 1; } \ No newline at end of file -- cgit 1.4.1-3-g733a5 From ca49fd402af8e7bf613c43e996274b5a017958d2 Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Fri, 5 Oct 2012 14:27:56 -0700 Subject: wip --- src/libcore/cmath.rs | 16 ++++++++-------- src/libstd/time.rs | 30 +++++++++++++++++++++++++++++- src/libsyntax/ast.rs | 2 +- src/libsyntax/parse/comments.rs | 28 ++++++++++++++-------------- src/libsyntax/parse/eval.rs | 10 +++++----- src/libsyntax/parse/parser.rs | 10 ++++++---- src/libsyntax/parse/token.rs | 2 +- src/libsyntax/print/pprust.rs | 1 - src/rustc/metadata/encoder.rs | 2 +- src/rustc/metadata/tydecode.rs | 1 - src/rustc/metadata/tyencode.rs | 1 - src/rustc/middle/borrowck.rs | 6 +++--- src/rustc/middle/borrowck/check_loans.rs | 11 +++++------ src/rustc/middle/borrowck/gather_loans.rs | 4 ---- src/rustc/middle/kind.rs | 18 +++++------------- src/rustc/middle/liveness.rs | 29 ++++++++--------------------- src/rustc/middle/mem_categorization.rs | 3 --- src/rustc/middle/trans/base.rs | 2 +- src/rustc/middle/trans/callee.rs | 2 +- src/rustc/middle/trans/reflect.rs | 1 - src/rustc/middle/trans/shape.rs | 8 ++++---- src/rustc/middle/trans/type_use.rs | 2 +- src/rustc/middle/trans/uniq.rs | 1 - 23 files changed, 93 insertions(+), 97 deletions(-) (limited to 'src/libstd') diff --git a/src/libcore/cmath.rs b/src/libcore/cmath.rs index 9a9a7cb3112..b0aeb78afaa 100644 --- a/src/libcore/cmath.rs +++ b/src/libcore/cmath.rs @@ -40,15 +40,15 @@ pub extern mod c_double { #[link_name="fmax"] pure fn fmax(a: c_double, b: c_double) -> c_double; #[link_name="fmin"] pure fn fmin(a: c_double, b: c_double) -> c_double; pure fn nextafter(x: c_double, y: c_double) -> c_double; - pure fn frexp(n: c_double, &value: c_int) -> c_double; + pure fn frexp(n: c_double, value: &mut c_int) -> c_double; pure fn hypot(x: c_double, y: c_double) -> c_double; pure fn ldexp(x: c_double, n: c_int) -> c_double; #[cfg(unix)] #[link_name="lgamma_r"] pure fn lgamma(n: c_double, - &sign: c_int) -> c_double; + sign: &mut c_int) -> c_double; #[cfg(windows)] #[link_name="__lgamma_r"] pure fn lgamma(n: c_double, - &sign: c_int) -> c_double; + sign: &mut c_int) -> c_double; // renamed: log is a reserved keyword; ln seems more natural, too #[link_name="log"] pure fn ln(n: c_double) -> c_double; // renamed: "logb" /often/ is confused for log2 by beginners @@ -58,7 +58,7 @@ pub extern mod c_double { pure fn log10(n: c_double) -> c_double; pure fn log2(n: c_double) -> c_double; #[link_name="ilogb"] pure fn ilog_radix(n: c_double) -> c_int; - pure fn modf(n: c_double, &iptr: c_double) -> c_double; + pure fn modf(n: c_double, iptr: &mut c_double) -> c_double; pure fn pow(n: c_double, e: c_double) -> c_double; // FIXME (#1379): enable when rounding modes become available // pure fn rint(n: c_double) -> c_double; @@ -110,7 +110,7 @@ pub extern mod c_float { #[link_name="fdimf"] pure fn abs_sub(a: c_float, b: c_float) -> c_float; #[link_name="floorf"] pure fn floor(n: c_float) -> c_float; #[link_name="frexpf"] pure fn frexp(n: c_float, - &value: c_int) -> c_float; + value: &mut c_int) -> c_float; #[link_name="fmaf"] pure fn mul_add(a: c_float, b: c_float, c: c_float) -> c_float; #[link_name="fmaxf"] pure fn fmax(a: c_float, b: c_float) -> c_float; @@ -122,11 +122,11 @@ pub extern mod c_float { #[cfg(unix)] #[link_name="lgammaf_r"] pure fn lgamma(n: c_float, - &sign: c_int) -> c_float; + sign: &mut c_int) -> c_float; #[cfg(windows)] #[link_name="__lgammaf_r"] pure fn lgamma(n: c_float, - &sign: c_int) -> c_float; + sign: &mut c_int) -> c_float; #[link_name="logf"] pure fn ln(n: c_float) -> c_float; #[link_name="logbf"] pure fn log_radix(n: c_float) -> c_float; @@ -135,7 +135,7 @@ pub extern mod c_float { #[link_name="log10f"] pure fn log10(n: c_float) -> c_float; #[link_name="ilogbf"] pure fn ilog_radix(n: c_float) -> c_int; #[link_name="modff"] pure fn modf(n: c_float, - &iptr: c_float) -> c_float; + iptr: &mut c_float) -> c_float; #[link_name="powf"] pure fn pow(n: c_float, e: c_float) -> c_float; // FIXME (#1379): enable when rounding modes become available // #[link_name="rintf"] pure fn rint(n: c_float) -> c_float; diff --git a/src/libstd/time.rs b/src/libstd/time.rs index 627a3b8eeae..8fa1e0cf3f0 100644 --- a/src/libstd/time.rs +++ b/src/libstd/time.rs @@ -7,9 +7,18 @@ use result::{Result, Ok, Err}; #[abi = "cdecl"] extern mod rustrt { - #[legacy_exports]; + #[legacy_exports] + #[cfg(stage0)] fn get_time(&sec: i64, &nsec: i32); + #[cfg(stage1)] + #[cfg(stage2)] + fn get_time(sec: &mut i64, nsec: &mut i32); + + #[cfg(stage0)] fn precise_time_ns(&ns: u64); + #[cfg(stage1)] + #[cfg(stage2)] + fn precise_time_ns(ns: &mut u64); fn rust_tzset(); // FIXME: The i64 values can be passed by-val when #2064 is fixed. @@ -33,22 +42,41 @@ impl Timespec : Eq { * Returns the current time as a `timespec` containing the seconds and * nanoseconds since 1970-01-01T00:00:00Z. */ +#[cfg(stage0)] pub fn get_time() -> Timespec { let mut sec = 0i64; let mut nsec = 0i32; rustrt::get_time(sec, nsec); return {sec: sec, nsec: nsec}; } +#[cfg(stage1)] +#[cfg(stage2)] +pub fn get_time() -> Timespec { + let mut sec = 0i64; + let mut nsec = 0i32; + rustrt::get_time(&mut sec, &mut nsec); + return {sec: sec, nsec: nsec}; +} + /** * Returns the current value of a high-resolution performance counter * in nanoseconds since an unspecified epoch. */ +#[cfg(stage0)] pub fn precise_time_ns() -> u64 { let mut ns = 0u64; rustrt::precise_time_ns(ns); ns } +#[cfg(stage1)] +#[cfg(stage2)] +pub fn precise_time_ns() -> u64 { + let mut ns = 0u64; + rustrt::precise_time_ns(&mut ns); + ns +} + /** * Returns the current value of a high-resolution performance counter diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index e17b52fb27d..a50189cf598 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -574,7 +574,7 @@ impl inferable : cmp::Eq { // "resolved" mode: the real modes. #[auto_serialize] -enum rmode { by_ref, by_val, by_mutbl_ref, by_move, by_copy } +enum rmode { by_ref, by_val, by_move, by_copy } impl rmode : to_bytes::IterBytes { pure fn iter_bytes(+lsb0: bool, f: to_bytes::Cb) { diff --git a/src/libsyntax/parse/comments.rs b/src/libsyntax/parse/comments.rs index cb8416501b3..4f265e1919c 100644 --- a/src/libsyntax/parse/comments.rs +++ b/src/libsyntax/parse/comments.rs @@ -127,14 +127,14 @@ fn consume_non_eol_whitespace(rdr: string_reader) { } } -fn push_blank_line_comment(rdr: string_reader, &comments: ~[cmnt]) { +fn push_blank_line_comment(rdr: string_reader, comments: &mut ~[cmnt]) { debug!(">>> blank-line comment"); let v: ~[~str] = ~[]; comments.push({style: blank_line, lines: v, pos: rdr.chpos}); } fn consume_whitespace_counting_blank_lines(rdr: string_reader, - &comments: ~[cmnt]) { + comments: &mut ~[cmnt]) { while is_whitespace(rdr.curr) && !is_eof(rdr) { if rdr.col == 0u && rdr.curr == '\n' { push_blank_line_comment(rdr, comments); @@ -145,7 +145,7 @@ fn consume_whitespace_counting_blank_lines(rdr: string_reader, fn read_shebang_comment(rdr: string_reader, code_to_the_left: bool, - &comments: ~[cmnt]) { + comments: &mut ~[cmnt]) { debug!(">>> shebang comment"); let p = rdr.chpos; debug!("<<< shebang comment"); @@ -157,7 +157,7 @@ fn read_shebang_comment(rdr: string_reader, code_to_the_left: bool, } fn read_line_comments(rdr: string_reader, code_to_the_left: bool, - &comments: ~[cmnt]) { + comments: &mut ~[cmnt]) { debug!(">>> line comments"); let p = rdr.chpos; let mut lines: ~[~str] = ~[]; @@ -188,8 +188,8 @@ fn all_whitespace(s: ~str, begin: uint, end: uint) -> bool { return true; } -fn trim_whitespace_prefix_and_push_line(&lines: ~[~str], - s: ~str, col: uint) unsafe { +fn trim_whitespace_prefix_and_push_line(lines: &mut ~[~str], + s: ~str, col: uint) { let mut s1; let len = str::len(s); if all_whitespace(s, 0u, uint::min(len, col)) { @@ -202,7 +202,7 @@ fn trim_whitespace_prefix_and_push_line(&lines: ~[~str], } fn read_block_comment(rdr: string_reader, code_to_the_left: bool, - &comments: ~[cmnt]) { + comments: &mut ~[cmnt]) { debug!(">>> block comment"); let p = rdr.chpos; let mut lines: ~[~str] = ~[]; @@ -228,7 +228,7 @@ fn read_block_comment(rdr: string_reader, code_to_the_left: bool, debug!("=== block comment level %d", level); if is_eof(rdr) {(rdr as reader).fatal(~"unterminated block comment");} if rdr.curr == '\n' { - trim_whitespace_prefix_and_push_line(lines, curr_line, col); + trim_whitespace_prefix_and_push_line(&mut lines, curr_line, col); curr_line = ~""; bump(rdr); } else { @@ -248,8 +248,8 @@ fn read_block_comment(rdr: string_reader, code_to_the_left: bool, } } } - if str::len(curr_line) != 0u { - trim_whitespace_prefix_and_push_line(lines, curr_line, col); + if str::len(curr_line) != 0 { + trim_whitespace_prefix_and_push_line(&mut lines, curr_line, col); } let mut style = if code_to_the_left { trailing } else { isolated }; consume_non_eol_whitespace(rdr); @@ -267,7 +267,7 @@ fn peeking_at_comment(rdr: string_reader) -> bool { } fn consume_comment(rdr: string_reader, code_to_the_left: bool, - &comments: ~[cmnt]) { + comments: &mut ~[cmnt]) { debug!(">>> consume comment"); if rdr.curr == '/' && nextch(rdr) == '/' { read_line_comments(rdr, code_to_the_left, comments); @@ -299,11 +299,11 @@ fn gather_comments_and_literals(span_diagnostic: diagnostic::span_handler, consume_non_eol_whitespace(rdr); if rdr.curr == '\n' { code_to_the_left = false; - consume_whitespace_counting_blank_lines(rdr, comments); + consume_whitespace_counting_blank_lines(rdr, &mut comments); } while peeking_at_comment(rdr) { - consume_comment(rdr, code_to_the_left, comments); - consume_whitespace_counting_blank_lines(rdr, comments); + consume_comment(rdr, code_to_the_left, &mut comments); + consume_whitespace_counting_blank_lines(rdr, &mut comments); } break; } diff --git a/src/libsyntax/parse/eval.rs b/src/libsyntax/parse/eval.rs index 14dc490346e..c9106028491 100644 --- a/src/libsyntax/parse/eval.rs +++ b/src/libsyntax/parse/eval.rs @@ -10,8 +10,8 @@ type ctx = fn eval_crate_directives(cx: ctx, cdirs: ~[@ast::crate_directive], prefix: &Path, - &view_items: ~[@ast::view_item], - &items: ~[@ast::item]) { + view_items: &mut~[@ast::view_item], + items: &mut~[@ast::item]) { for cdirs.each |sub_cdir| { eval_crate_directive(cx, *sub_cdir, prefix, view_items, items); } @@ -24,7 +24,7 @@ fn eval_crate_directives_to_mod(cx: ctx, cdirs: ~[@ast::crate_directive], = parse_companion_mod(cx, prefix, suffix); let mut view_items: ~[@ast::view_item] = ~[]; let mut items: ~[@ast::item] = ~[]; - eval_crate_directives(cx, cdirs, prefix, view_items, items); + eval_crate_directives(cx, cdirs, prefix, &mut view_items, &mut items); return ({view_items: vec::append(view_items, cview_items), items: vec::append(items, citems)}, cattrs); @@ -82,8 +82,8 @@ fn cdir_path_opt(default: ~str, attrs: ~[ast::attribute]) -> ~str { } fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: &Path, - &view_items: ~[@ast::view_item], - &items: ~[@ast::item]) { + view_items: &mut ~[@ast::view_item], + items: &mut ~[@ast::item]) { match cdir.node { ast::cdir_src_mod(vis, id, attrs) => { let file_path = Path(cdir_path_opt( diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 1a87d7fed69..79f7d72d2a5 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -26,7 +26,7 @@ use ast::{_mod, add, alt_check, alt_exhaustive, arg, arm, attribute, bind_by_ref, bind_by_implicit_ref, bind_by_value, bind_by_move, bitand, bitor, bitxor, blk, blk_check_mode, bound_const, bound_copy, bound_send, bound_trait, bound_owned, box, by_copy, - by_move, by_mutbl_ref, by_ref, by_val, capture_clause, + by_move, by_ref, by_val, capture_clause, capture_item, cdir_dir_mod, cdir_src_mod, cdir_view_item, class_immutable, class_mutable, crate, crate_cfg, crate_directive, decl, decl_item, decl_local, @@ -571,7 +571,7 @@ impl parser { fn parse_arg_mode() -> mode { if self.eat(token::BINOP(token::AND)) { self.warn(~"Obsolete syntax has no effect"); - expl(by_mutbl_ref) + expl(by_val) } else if self.eat(token::BINOP(token::MINUS)) { expl(by_move) } else if self.eat(token::ANDAND) { @@ -1276,7 +1276,8 @@ impl parser { return match self.token { token::LPAREN | token::LBRACE | token::LBRACKET => { - let ket = token::flip_delimiter(self.token); + // tjc: ?????? + let ket = token::flip_delimiter(copy self.token); tt_delim(vec::append( ~[parse_tt_tok(self, true)], vec::append( @@ -1297,7 +1298,8 @@ impl parser { return match self.token { token::LBRACE | token::LPAREN | token::LBRACKET => { self.parse_matcher_subseq(name_idx, copy self.token, - token::flip_delimiter(self.token)) + // tjc: not sure why we need a copy + token::flip_delimiter(copy self.token)) } _ => self.fatal(~"expected open delimiter") } diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index a328ff1bdf6..99b789cf63f 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -230,7 +230,7 @@ pure fn can_begin_expr(t: token) -> bool { } /// what's the opposite delimiter? -fn flip_delimiter(&t: token::token) -> token::token { +fn flip_delimiter(t: token::token) -> token::token { match t { token::LPAREN => token::RPAREN, token::LBRACE => token::RBRACE, diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index d08b20eed84..bff356e5cb7 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -1688,7 +1688,6 @@ fn print_fn_block_args(s: ps, decl: ast::fn_decl, fn mode_to_str(m: ast::mode) -> ~str { match m { - ast::expl(ast::by_mutbl_ref) => ~"&", ast::expl(ast::by_move) => ~"-", ast::expl(ast::by_ref) => ~"&&", ast::expl(ast::by_val) => ~"++", diff --git a/src/rustc/metadata/encoder.rs b/src/rustc/metadata/encoder.rs index 87ef3b4749c..47d91c10818 100644 --- a/src/rustc/metadata/encoder.rs +++ b/src/rustc/metadata/encoder.rs @@ -116,7 +116,7 @@ fn encode_mutability(ebml_w: ebml::Writer, mt: class_mutability) { type entry = {val: T, pos: uint}; fn add_to_index(ecx: @encode_ctxt, ebml_w: ebml::Writer, path: &[ident], - &index: ~[entry<~str>], name: ident) { + index: &mut ~[entry<~str>], name: ident) { let mut full_path = ~[]; full_path.push_all(path); full_path.push(name); diff --git a/src/rustc/metadata/tydecode.rs b/src/rustc/metadata/tydecode.rs index f3fa0e3f350..1375ff2d0be 100644 --- a/src/rustc/metadata/tydecode.rs +++ b/src/rustc/metadata/tydecode.rs @@ -394,7 +394,6 @@ fn parse_arg(st: @pstate, conv: conv_did) -> ty::arg { fn parse_mode(st: @pstate) -> ast::mode { let m = ast::expl(match next(st) { - '&' => ast::by_mutbl_ref, '-' => ast::by_move, '+' => ast::by_copy, '=' => ast::by_ref, diff --git a/src/rustc/metadata/tyencode.rs b/src/rustc/metadata/tyencode.rs index 88d83ca23f4..83f92b44fe8 100644 --- a/src/rustc/metadata/tyencode.rs +++ b/src/rustc/metadata/tyencode.rs @@ -332,7 +332,6 @@ fn enc_arg(w: io::Writer, cx: @ctxt, arg: ty::arg) { fn enc_mode(w: io::Writer, cx: @ctxt, m: mode) { match ty::resolved_mode(cx.tcx, m) { - by_mutbl_ref => w.write_char('&'), by_move => w.write_char('-'), by_copy => w.write_char('+'), by_ref => w.write_char('='), diff --git a/src/rustc/middle/borrowck.rs b/src/rustc/middle/borrowck.rs index 414890cbd7c..e2f7ba20642 100644 --- a/src/rustc/middle/borrowck.rs +++ b/src/rustc/middle/borrowck.rs @@ -396,10 +396,10 @@ type req_maps = { pure_map: HashMap }; -fn save_and_restore(&save_and_restore_t: T, f: fn() -> U) -> U { - let old_save_and_restore_t = save_and_restore_t; +fn save_and_restore(save_and_restore_t: &mut T, f: fn() -> U) -> U { + let old_save_and_restore_t = *save_and_restore_t; let u <- f(); - save_and_restore_t = old_save_and_restore_t; + *save_and_restore_t = old_save_and_restore_t; move u } diff --git a/src/rustc/middle/borrowck/check_loans.rs b/src/rustc/middle/borrowck/check_loans.rs index 0c79c0fcd7f..51beff021fa 100644 --- a/src/rustc/middle/borrowck/check_loans.rs +++ b/src/rustc/middle/borrowck/check_loans.rs @@ -529,8 +529,7 @@ impl check_loan_ctxt { ast::by_move => { self.check_move_out(*arg); } - ast::by_mutbl_ref | ast::by_ref | - ast::by_copy | ast::by_val => { + ast::by_ref | ast::by_copy | ast::by_val => { } } } @@ -542,9 +541,9 @@ fn check_loans_in_fn(fk: visit::fn_kind, decl: ast::fn_decl, body: ast::blk, visitor: visit::vt) { debug!("purity on entry=%?", copy self.declared_purity); - do save_and_restore(self.in_ctor) { - do save_and_restore(self.declared_purity) { - do save_and_restore(self.fn_args) { + do save_and_restore(&mut(self.in_ctor)) { + do save_and_restore(&mut(self.declared_purity)) { + do save_and_restore(&mut(self.fn_args)) { let is_stack_closure = self.is_stack_closure(id); let fty = ty::node_id_to_type(self.tcx(), id); self.declared_purity = ty::determine_inherited_purity( @@ -667,7 +666,7 @@ fn check_loans_in_expr(expr: @ast::expr, fn check_loans_in_block(blk: ast::blk, &&self: check_loan_ctxt, vt: visit::vt) { - do save_and_restore(self.declared_purity) { + do save_and_restore(&mut(self.declared_purity)) { self.check_for_conflicting_loans(blk.node.id); match blk.node.rules { diff --git a/src/rustc/middle/borrowck/gather_loans.rs b/src/rustc/middle/borrowck/gather_loans.rs index 327db51518b..5dfde8c9af6 100644 --- a/src/rustc/middle/borrowck/gather_loans.rs +++ b/src/rustc/middle/borrowck/gather_loans.rs @@ -115,10 +115,6 @@ fn req_loans_in_expr(ex: @ast::expr, let scope_r = ty::re_scope(ex.id); for vec::each2(args, arg_tys) |arg, arg_ty| { match ty::resolved_mode(self.tcx(), arg_ty.mode) { - ast::by_mutbl_ref => { - let arg_cmt = self.bccx.cat_expr(*arg); - self.guarantee_valid(arg_cmt, m_mutbl, scope_r); - } ast::by_ref => { let arg_cmt = self.bccx.cat_expr(*arg); self.guarantee_valid(arg_cmt, m_imm, scope_r); diff --git a/src/rustc/middle/kind.rs b/src/rustc/middle/kind.rs index 9aff382775c..1da145cabc9 100644 --- a/src/rustc/middle/kind.rs +++ b/src/rustc/middle/kind.rs @@ -319,13 +319,13 @@ fn check_expr(e: @expr, cx: ctx, v: visit::vt) { for exprs.each |expr| { maybe_copy(cx, *expr, None); } } expr_call(f, args, _) => { - let mut i = 0u; + let mut i = 0; for ty::ty_fn_args(ty::expr_ty(cx.tcx, f)).each |arg_t| { match ty::arg_mode(cx.tcx, *arg_t) { by_copy => maybe_copy(cx, args[i], None), - by_ref | by_val | by_mutbl_ref | by_move => () + by_ref | by_val | by_move => () } - i += 1u; + i += 1; } } expr_field(lhs, _, _) => { @@ -335,7 +335,7 @@ fn check_expr(e: @expr, cx: ctx, v: visit::vt) { Some(ref mme) => { match ty::arg_mode(cx.tcx, mme.self_arg) { by_copy => maybe_copy(cx, lhs, None), - by_ref | by_val | by_mutbl_ref | by_move => () + by_ref | by_val | by_move => () } } _ => () @@ -465,18 +465,10 @@ fn check_imm_free_var(cx: ctx, def: def, sp: span) { cx.tcx.sess.span_err(sp, msg); } } - def_arg(_, mode) => { - match ty::resolved_mode(cx.tcx, mode) { - by_ref | by_val | by_move | by_copy => { /* ok */ } - by_mutbl_ref => { - cx.tcx.sess.span_err(sp, msg); - } - } - } def_upvar(_, def1, _, _) => { check_imm_free_var(cx, *def1, sp); } - def_binding(*) | def_self(*) => { /*ok*/ } + def_arg(*) | def_binding(*) | def_self(*) => { /*ok*/ } _ => { cx.tcx.sess.span_bug( sp, diff --git a/src/rustc/middle/liveness.rs b/src/rustc/middle/liveness.rs index 69b325b03a4..bdf808e8568 100644 --- a/src/rustc/middle/liveness.rs +++ b/src/rustc/middle/liveness.rs @@ -398,8 +398,8 @@ impl IrMaps { (*v).push(id); } - Arg(_, _, by_ref) | Arg(_, _, by_mutbl_ref) | - Arg(_, _, by_val) | Self | Field(_) | ImplicitRet | + Arg(_, _, by_ref) | Arg(_, _, by_val) | Self | Field(_) | + ImplicitRet | Local(LocalInfo {kind: FromMatch(bind_by_implicit_ref), _}) => { debug!("--but it is not owned"); } @@ -831,9 +831,9 @@ impl Liveness { let mut changed = false; do self.indices2(ln, succ_ln) |idx, succ_idx| { changed |= copy_if_invalid(copy self.users[succ_idx].reader, - self.users[idx].reader); + &mut self.users[idx].reader); changed |= copy_if_invalid(copy self.users[succ_idx].writer, - self.users[idx].writer); + &mut self.users[idx].writer); if self.users[succ_idx].used && !self.users[idx].used { self.users[idx].used = true; changed = true; @@ -844,10 +844,10 @@ impl Liveness { ln.to_str(), self.ln_str(succ_ln), first_merge, changed); return changed; - fn copy_if_invalid(src: LiveNode, &dst: LiveNode) -> bool { + fn copy_if_invalid(src: LiveNode, dst: &mut LiveNode) -> bool { if src.is_valid() { if !dst.is_valid() { - dst = src; + *dst = src; return true; } } @@ -919,7 +919,7 @@ impl Liveness { // inputs passed by & mode should be considered live on exit: for decl.inputs.each |arg| { match ty::resolved_mode(self.tcx, arg.mode) { - by_mutbl_ref | by_ref | by_val => { + by_ref | by_val => { // These are "non-owned" modes, so register a read at // the end. This will prevent us from moving out of // such variables but also prevent us from registering @@ -1573,7 +1573,7 @@ fn check_expr(expr: @expr, &&self: @Liveness, vt: vt<@Liveness>) { let targs = ty::ty_fn_args(ty::expr_ty(self.tcx, f)); for vec::each2(args, targs) |arg_expr, arg_ty| { match ty::resolved_mode(self.tcx, arg_ty.mode) { - by_val | by_copy | by_ref | by_mutbl_ref => {} + by_val | by_copy | by_ref => {} by_move => { self.check_move_from_expr(*arg_expr, vt); } @@ -1866,19 +1866,6 @@ impl @Liveness { for decl.inputs.each |arg| { let var = self.variable(arg.id, arg.ty.span); match ty::resolved_mode(self.tcx, arg.mode) { - by_mutbl_ref => { - // for mutable reference arguments, something like - // x = 1; - // is not worth warning about, as it has visible - // side effects outside the fn. - match self.assigned_on_entry(entry_ln, var) { - Some(_) => { /*ok*/ } - None => { - // but if it is not written, it ought to be used - self.warn_about_unused(sp, entry_ln, var); - } - } - } by_val | by_ref | by_move | by_copy => { self.warn_about_unused(sp, entry_ln, var); } diff --git a/src/rustc/middle/mem_categorization.rs b/src/rustc/middle/mem_categorization.rs index fe465db1312..dc5874ea2cf 100644 --- a/src/rustc/middle/mem_categorization.rs +++ b/src/rustc/middle/mem_categorization.rs @@ -523,9 +523,6 @@ impl &mem_categorization_ctxt { // m: mutability of the argument // lp: loan path, must be none for aliasable things let {m,lp} = match ty::resolved_mode(self.tcx, mode) { - ast::by_mutbl_ref => { - {m: m_mutbl, lp: None} - } ast::by_move | ast::by_copy => { {m: m_imm, lp: Some(@lp_arg(vid))} } diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs index ce596586ddc..368a523306e 100644 --- a/src/rustc/middle/trans/base.rs +++ b/src/rustc/middle/trans/base.rs @@ -1503,7 +1503,7 @@ fn copy_args_to_allocas(fcx: fn_ctxt, // the event it's not truly needed. let llarg; match ty::resolved_mode(tcx, arg_ty.mode) { - ast::by_ref | ast::by_mutbl_ref => { + ast::by_ref => { llarg = raw_llarg; } ast::by_move | ast::by_copy => { diff --git a/src/rustc/middle/trans/callee.rs b/src/rustc/middle/trans/callee.rs index e7b4dd171e3..c851c5bc725 100644 --- a/src/rustc/middle/trans/callee.rs +++ b/src/rustc/middle/trans/callee.rs @@ -592,7 +592,7 @@ fn trans_arg_expr(bcx: block, DoAutorefArg => { val = arg_datum.to_ref_llval(bcx); } DontAutorefArg => { match arg_mode { - ast::by_ref | ast::by_mutbl_ref => { + ast::by_ref => { val = arg_datum.to_ref_llval(bcx); } diff --git a/src/rustc/middle/trans/reflect.rs b/src/rustc/middle/trans/reflect.rs index cdd11ee85c5..ef1cc15f5c0 100644 --- a/src/rustc/middle/trans/reflect.rs +++ b/src/rustc/middle/trans/reflect.rs @@ -208,7 +208,6 @@ impl reflector { ast::expl(e) => match e { ast::by_ref => 1u, ast::by_val => 2u, - ast::by_mutbl_ref => 3u, ast::by_move => 4u, ast::by_copy => 5u } diff --git a/src/rustc/middle/trans/shape.rs b/src/rustc/middle/trans/shape.rs index cf58b5b51c4..e7dfac42bec 100644 --- a/src/rustc/middle/trans/shape.rs +++ b/src/rustc/middle/trans/shape.rs @@ -49,12 +49,12 @@ fn mk_ctxt(llmod: ModuleRef) -> ctxt { return {mut next_tag_id: 0u16, pad: 0u16, pad2: 0u32}; } -fn add_u16(&dest: ~[u8], val: u16) { - dest += ~[(val & 0xffu16) as u8, (val >> 8u16) as u8]; +fn add_u16(dest: &mut ~[u8], val: u16) { + *dest += ~[(val & 0xffu16) as u8, (val >> 8u16) as u8]; } -fn add_substr(&dest: ~[u8], src: ~[u8]) { +fn add_substr(dest: &mut ~[u8], src: ~[u8]) { add_u16(dest, vec::len(src) as u16); - dest += src; + *dest += src; } diff --git a/src/rustc/middle/trans/type_use.rs b/src/rustc/middle/trans/type_use.rs index 6bd3c22f626..9140ea94e9c 100644 --- a/src/rustc/middle/trans/type_use.rs +++ b/src/rustc/middle/trans/type_use.rs @@ -53,7 +53,7 @@ fn type_uses_for(ccx: @crate_ctxt, fn_id: def_id, n_tps: uint) by_val | by_move | by_copy => { type_needs(cx, use_repr, arg.ty); } - by_ref | by_mutbl_ref => {} + by_ref => {} } } } diff --git a/src/rustc/middle/trans/uniq.rs b/src/rustc/middle/trans/uniq.rs index 6ab91c4a1d7..50ea363ace2 100644 --- a/src/rustc/middle/trans/uniq.rs +++ b/src/rustc/middle/trans/uniq.rs @@ -3,7 +3,6 @@ use lib::llvm::ValueRef; use common::*; use build::*; use base::*; -use shape::llsize_of; use datum::immediate_rvalue; export make_free_glue, autoderef, duplicate; -- cgit 1.4.1-3-g733a5 From f8bc0d25455d7bfb299cd0e7693ee575f5dbce21 Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Fri, 5 Oct 2012 16:10:08 -0700 Subject: Revert "wip" This reverts commit ca49fd402af8e7bf613c43e996274b5a017958d2. --- src/libcore/cmath.rs | 16 ++++++++-------- src/libstd/time.rs | 30 +----------------------------- src/libsyntax/ast.rs | 2 +- src/libsyntax/parse/comments.rs | 28 ++++++++++++++-------------- src/libsyntax/parse/eval.rs | 10 +++++----- src/libsyntax/parse/parser.rs | 10 ++++------ src/libsyntax/parse/token.rs | 2 +- src/libsyntax/print/pprust.rs | 1 + src/rustc/metadata/encoder.rs | 2 +- src/rustc/metadata/tydecode.rs | 1 + src/rustc/metadata/tyencode.rs | 1 + src/rustc/middle/borrowck.rs | 6 +++--- src/rustc/middle/borrowck/check_loans.rs | 11 ++++++----- src/rustc/middle/borrowck/gather_loans.rs | 4 ++++ src/rustc/middle/kind.rs | 18 +++++++++++++----- src/rustc/middle/liveness.rs | 29 +++++++++++++++++++++-------- src/rustc/middle/mem_categorization.rs | 3 +++ src/rustc/middle/trans/base.rs | 2 +- src/rustc/middle/trans/callee.rs | 2 +- src/rustc/middle/trans/reflect.rs | 1 + src/rustc/middle/trans/shape.rs | 8 ++++---- src/rustc/middle/trans/type_use.rs | 2 +- src/rustc/middle/trans/uniq.rs | 1 + 23 files changed, 97 insertions(+), 93 deletions(-) (limited to 'src/libstd') diff --git a/src/libcore/cmath.rs b/src/libcore/cmath.rs index b0aeb78afaa..9a9a7cb3112 100644 --- a/src/libcore/cmath.rs +++ b/src/libcore/cmath.rs @@ -40,15 +40,15 @@ pub extern mod c_double { #[link_name="fmax"] pure fn fmax(a: c_double, b: c_double) -> c_double; #[link_name="fmin"] pure fn fmin(a: c_double, b: c_double) -> c_double; pure fn nextafter(x: c_double, y: c_double) -> c_double; - pure fn frexp(n: c_double, value: &mut c_int) -> c_double; + pure fn frexp(n: c_double, &value: c_int) -> c_double; pure fn hypot(x: c_double, y: c_double) -> c_double; pure fn ldexp(x: c_double, n: c_int) -> c_double; #[cfg(unix)] #[link_name="lgamma_r"] pure fn lgamma(n: c_double, - sign: &mut c_int) -> c_double; + &sign: c_int) -> c_double; #[cfg(windows)] #[link_name="__lgamma_r"] pure fn lgamma(n: c_double, - sign: &mut c_int) -> c_double; + &sign: c_int) -> c_double; // renamed: log is a reserved keyword; ln seems more natural, too #[link_name="log"] pure fn ln(n: c_double) -> c_double; // renamed: "logb" /often/ is confused for log2 by beginners @@ -58,7 +58,7 @@ pub extern mod c_double { pure fn log10(n: c_double) -> c_double; pure fn log2(n: c_double) -> c_double; #[link_name="ilogb"] pure fn ilog_radix(n: c_double) -> c_int; - pure fn modf(n: c_double, iptr: &mut c_double) -> c_double; + pure fn modf(n: c_double, &iptr: c_double) -> c_double; pure fn pow(n: c_double, e: c_double) -> c_double; // FIXME (#1379): enable when rounding modes become available // pure fn rint(n: c_double) -> c_double; @@ -110,7 +110,7 @@ pub extern mod c_float { #[link_name="fdimf"] pure fn abs_sub(a: c_float, b: c_float) -> c_float; #[link_name="floorf"] pure fn floor(n: c_float) -> c_float; #[link_name="frexpf"] pure fn frexp(n: c_float, - value: &mut c_int) -> c_float; + &value: c_int) -> c_float; #[link_name="fmaf"] pure fn mul_add(a: c_float, b: c_float, c: c_float) -> c_float; #[link_name="fmaxf"] pure fn fmax(a: c_float, b: c_float) -> c_float; @@ -122,11 +122,11 @@ pub extern mod c_float { #[cfg(unix)] #[link_name="lgammaf_r"] pure fn lgamma(n: c_float, - sign: &mut c_int) -> c_float; + &sign: c_int) -> c_float; #[cfg(windows)] #[link_name="__lgammaf_r"] pure fn lgamma(n: c_float, - sign: &mut c_int) -> c_float; + &sign: c_int) -> c_float; #[link_name="logf"] pure fn ln(n: c_float) -> c_float; #[link_name="logbf"] pure fn log_radix(n: c_float) -> c_float; @@ -135,7 +135,7 @@ pub extern mod c_float { #[link_name="log10f"] pure fn log10(n: c_float) -> c_float; #[link_name="ilogbf"] pure fn ilog_radix(n: c_float) -> c_int; #[link_name="modff"] pure fn modf(n: c_float, - iptr: &mut c_float) -> c_float; + &iptr: c_float) -> c_float; #[link_name="powf"] pure fn pow(n: c_float, e: c_float) -> c_float; // FIXME (#1379): enable when rounding modes become available // #[link_name="rintf"] pure fn rint(n: c_float) -> c_float; diff --git a/src/libstd/time.rs b/src/libstd/time.rs index 8fa1e0cf3f0..627a3b8eeae 100644 --- a/src/libstd/time.rs +++ b/src/libstd/time.rs @@ -7,18 +7,9 @@ use result::{Result, Ok, Err}; #[abi = "cdecl"] extern mod rustrt { - #[legacy_exports] - #[cfg(stage0)] + #[legacy_exports]; fn get_time(&sec: i64, &nsec: i32); - #[cfg(stage1)] - #[cfg(stage2)] - fn get_time(sec: &mut i64, nsec: &mut i32); - - #[cfg(stage0)] fn precise_time_ns(&ns: u64); - #[cfg(stage1)] - #[cfg(stage2)] - fn precise_time_ns(ns: &mut u64); fn rust_tzset(); // FIXME: The i64 values can be passed by-val when #2064 is fixed. @@ -42,41 +33,22 @@ impl Timespec : Eq { * Returns the current time as a `timespec` containing the seconds and * nanoseconds since 1970-01-01T00:00:00Z. */ -#[cfg(stage0)] pub fn get_time() -> Timespec { let mut sec = 0i64; let mut nsec = 0i32; rustrt::get_time(sec, nsec); return {sec: sec, nsec: nsec}; } -#[cfg(stage1)] -#[cfg(stage2)] -pub fn get_time() -> Timespec { - let mut sec = 0i64; - let mut nsec = 0i32; - rustrt::get_time(&mut sec, &mut nsec); - return {sec: sec, nsec: nsec}; -} - /** * Returns the current value of a high-resolution performance counter * in nanoseconds since an unspecified epoch. */ -#[cfg(stage0)] pub fn precise_time_ns() -> u64 { let mut ns = 0u64; rustrt::precise_time_ns(ns); ns } -#[cfg(stage1)] -#[cfg(stage2)] -pub fn precise_time_ns() -> u64 { - let mut ns = 0u64; - rustrt::precise_time_ns(&mut ns); - ns -} - /** * Returns the current value of a high-resolution performance counter diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index a50189cf598..e17b52fb27d 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -574,7 +574,7 @@ impl inferable : cmp::Eq { // "resolved" mode: the real modes. #[auto_serialize] -enum rmode { by_ref, by_val, by_move, by_copy } +enum rmode { by_ref, by_val, by_mutbl_ref, by_move, by_copy } impl rmode : to_bytes::IterBytes { pure fn iter_bytes(+lsb0: bool, f: to_bytes::Cb) { diff --git a/src/libsyntax/parse/comments.rs b/src/libsyntax/parse/comments.rs index 4f265e1919c..cb8416501b3 100644 --- a/src/libsyntax/parse/comments.rs +++ b/src/libsyntax/parse/comments.rs @@ -127,14 +127,14 @@ fn consume_non_eol_whitespace(rdr: string_reader) { } } -fn push_blank_line_comment(rdr: string_reader, comments: &mut ~[cmnt]) { +fn push_blank_line_comment(rdr: string_reader, &comments: ~[cmnt]) { debug!(">>> blank-line comment"); let v: ~[~str] = ~[]; comments.push({style: blank_line, lines: v, pos: rdr.chpos}); } fn consume_whitespace_counting_blank_lines(rdr: string_reader, - comments: &mut ~[cmnt]) { + &comments: ~[cmnt]) { while is_whitespace(rdr.curr) && !is_eof(rdr) { if rdr.col == 0u && rdr.curr == '\n' { push_blank_line_comment(rdr, comments); @@ -145,7 +145,7 @@ fn consume_whitespace_counting_blank_lines(rdr: string_reader, fn read_shebang_comment(rdr: string_reader, code_to_the_left: bool, - comments: &mut ~[cmnt]) { + &comments: ~[cmnt]) { debug!(">>> shebang comment"); let p = rdr.chpos; debug!("<<< shebang comment"); @@ -157,7 +157,7 @@ fn read_shebang_comment(rdr: string_reader, code_to_the_left: bool, } fn read_line_comments(rdr: string_reader, code_to_the_left: bool, - comments: &mut ~[cmnt]) { + &comments: ~[cmnt]) { debug!(">>> line comments"); let p = rdr.chpos; let mut lines: ~[~str] = ~[]; @@ -188,8 +188,8 @@ fn all_whitespace(s: ~str, begin: uint, end: uint) -> bool { return true; } -fn trim_whitespace_prefix_and_push_line(lines: &mut ~[~str], - s: ~str, col: uint) { +fn trim_whitespace_prefix_and_push_line(&lines: ~[~str], + s: ~str, col: uint) unsafe { let mut s1; let len = str::len(s); if all_whitespace(s, 0u, uint::min(len, col)) { @@ -202,7 +202,7 @@ fn trim_whitespace_prefix_and_push_line(lines: &mut ~[~str], } fn read_block_comment(rdr: string_reader, code_to_the_left: bool, - comments: &mut ~[cmnt]) { + &comments: ~[cmnt]) { debug!(">>> block comment"); let p = rdr.chpos; let mut lines: ~[~str] = ~[]; @@ -228,7 +228,7 @@ fn read_block_comment(rdr: string_reader, code_to_the_left: bool, debug!("=== block comment level %d", level); if is_eof(rdr) {(rdr as reader).fatal(~"unterminated block comment");} if rdr.curr == '\n' { - trim_whitespace_prefix_and_push_line(&mut lines, curr_line, col); + trim_whitespace_prefix_and_push_line(lines, curr_line, col); curr_line = ~""; bump(rdr); } else { @@ -248,8 +248,8 @@ fn read_block_comment(rdr: string_reader, code_to_the_left: bool, } } } - if str::len(curr_line) != 0 { - trim_whitespace_prefix_and_push_line(&mut lines, curr_line, col); + if str::len(curr_line) != 0u { + trim_whitespace_prefix_and_push_line(lines, curr_line, col); } let mut style = if code_to_the_left { trailing } else { isolated }; consume_non_eol_whitespace(rdr); @@ -267,7 +267,7 @@ fn peeking_at_comment(rdr: string_reader) -> bool { } fn consume_comment(rdr: string_reader, code_to_the_left: bool, - comments: &mut ~[cmnt]) { + &comments: ~[cmnt]) { debug!(">>> consume comment"); if rdr.curr == '/' && nextch(rdr) == '/' { read_line_comments(rdr, code_to_the_left, comments); @@ -299,11 +299,11 @@ fn gather_comments_and_literals(span_diagnostic: diagnostic::span_handler, consume_non_eol_whitespace(rdr); if rdr.curr == '\n' { code_to_the_left = false; - consume_whitespace_counting_blank_lines(rdr, &mut comments); + consume_whitespace_counting_blank_lines(rdr, comments); } while peeking_at_comment(rdr) { - consume_comment(rdr, code_to_the_left, &mut comments); - consume_whitespace_counting_blank_lines(rdr, &mut comments); + consume_comment(rdr, code_to_the_left, comments); + consume_whitespace_counting_blank_lines(rdr, comments); } break; } diff --git a/src/libsyntax/parse/eval.rs b/src/libsyntax/parse/eval.rs index c9106028491..14dc490346e 100644 --- a/src/libsyntax/parse/eval.rs +++ b/src/libsyntax/parse/eval.rs @@ -10,8 +10,8 @@ type ctx = fn eval_crate_directives(cx: ctx, cdirs: ~[@ast::crate_directive], prefix: &Path, - view_items: &mut~[@ast::view_item], - items: &mut~[@ast::item]) { + &view_items: ~[@ast::view_item], + &items: ~[@ast::item]) { for cdirs.each |sub_cdir| { eval_crate_directive(cx, *sub_cdir, prefix, view_items, items); } @@ -24,7 +24,7 @@ fn eval_crate_directives_to_mod(cx: ctx, cdirs: ~[@ast::crate_directive], = parse_companion_mod(cx, prefix, suffix); let mut view_items: ~[@ast::view_item] = ~[]; let mut items: ~[@ast::item] = ~[]; - eval_crate_directives(cx, cdirs, prefix, &mut view_items, &mut items); + eval_crate_directives(cx, cdirs, prefix, view_items, items); return ({view_items: vec::append(view_items, cview_items), items: vec::append(items, citems)}, cattrs); @@ -82,8 +82,8 @@ fn cdir_path_opt(default: ~str, attrs: ~[ast::attribute]) -> ~str { } fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: &Path, - view_items: &mut ~[@ast::view_item], - items: &mut ~[@ast::item]) { + &view_items: ~[@ast::view_item], + &items: ~[@ast::item]) { match cdir.node { ast::cdir_src_mod(vis, id, attrs) => { let file_path = Path(cdir_path_opt( diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 79f7d72d2a5..1a87d7fed69 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -26,7 +26,7 @@ use ast::{_mod, add, alt_check, alt_exhaustive, arg, arm, attribute, bind_by_ref, bind_by_implicit_ref, bind_by_value, bind_by_move, bitand, bitor, bitxor, blk, blk_check_mode, bound_const, bound_copy, bound_send, bound_trait, bound_owned, box, by_copy, - by_move, by_ref, by_val, capture_clause, + by_move, by_mutbl_ref, by_ref, by_val, capture_clause, capture_item, cdir_dir_mod, cdir_src_mod, cdir_view_item, class_immutable, class_mutable, crate, crate_cfg, crate_directive, decl, decl_item, decl_local, @@ -571,7 +571,7 @@ impl parser { fn parse_arg_mode() -> mode { if self.eat(token::BINOP(token::AND)) { self.warn(~"Obsolete syntax has no effect"); - expl(by_val) + expl(by_mutbl_ref) } else if self.eat(token::BINOP(token::MINUS)) { expl(by_move) } else if self.eat(token::ANDAND) { @@ -1276,8 +1276,7 @@ impl parser { return match self.token { token::LPAREN | token::LBRACE | token::LBRACKET => { - // tjc: ?????? - let ket = token::flip_delimiter(copy self.token); + let ket = token::flip_delimiter(self.token); tt_delim(vec::append( ~[parse_tt_tok(self, true)], vec::append( @@ -1298,8 +1297,7 @@ impl parser { return match self.token { token::LBRACE | token::LPAREN | token::LBRACKET => { self.parse_matcher_subseq(name_idx, copy self.token, - // tjc: not sure why we need a copy - token::flip_delimiter(copy self.token)) + token::flip_delimiter(self.token)) } _ => self.fatal(~"expected open delimiter") } diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index 99b789cf63f..a328ff1bdf6 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -230,7 +230,7 @@ pure fn can_begin_expr(t: token) -> bool { } /// what's the opposite delimiter? -fn flip_delimiter(t: token::token) -> token::token { +fn flip_delimiter(&t: token::token) -> token::token { match t { token::LPAREN => token::RPAREN, token::LBRACE => token::RBRACE, diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index bff356e5cb7..d08b20eed84 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -1688,6 +1688,7 @@ fn print_fn_block_args(s: ps, decl: ast::fn_decl, fn mode_to_str(m: ast::mode) -> ~str { match m { + ast::expl(ast::by_mutbl_ref) => ~"&", ast::expl(ast::by_move) => ~"-", ast::expl(ast::by_ref) => ~"&&", ast::expl(ast::by_val) => ~"++", diff --git a/src/rustc/metadata/encoder.rs b/src/rustc/metadata/encoder.rs index 47d91c10818..87ef3b4749c 100644 --- a/src/rustc/metadata/encoder.rs +++ b/src/rustc/metadata/encoder.rs @@ -116,7 +116,7 @@ fn encode_mutability(ebml_w: ebml::Writer, mt: class_mutability) { type entry = {val: T, pos: uint}; fn add_to_index(ecx: @encode_ctxt, ebml_w: ebml::Writer, path: &[ident], - index: &mut ~[entry<~str>], name: ident) { + &index: ~[entry<~str>], name: ident) { let mut full_path = ~[]; full_path.push_all(path); full_path.push(name); diff --git a/src/rustc/metadata/tydecode.rs b/src/rustc/metadata/tydecode.rs index 1375ff2d0be..f3fa0e3f350 100644 --- a/src/rustc/metadata/tydecode.rs +++ b/src/rustc/metadata/tydecode.rs @@ -394,6 +394,7 @@ fn parse_arg(st: @pstate, conv: conv_did) -> ty::arg { fn parse_mode(st: @pstate) -> ast::mode { let m = ast::expl(match next(st) { + '&' => ast::by_mutbl_ref, '-' => ast::by_move, '+' => ast::by_copy, '=' => ast::by_ref, diff --git a/src/rustc/metadata/tyencode.rs b/src/rustc/metadata/tyencode.rs index 83f92b44fe8..88d83ca23f4 100644 --- a/src/rustc/metadata/tyencode.rs +++ b/src/rustc/metadata/tyencode.rs @@ -332,6 +332,7 @@ fn enc_arg(w: io::Writer, cx: @ctxt, arg: ty::arg) { fn enc_mode(w: io::Writer, cx: @ctxt, m: mode) { match ty::resolved_mode(cx.tcx, m) { + by_mutbl_ref => w.write_char('&'), by_move => w.write_char('-'), by_copy => w.write_char('+'), by_ref => w.write_char('='), diff --git a/src/rustc/middle/borrowck.rs b/src/rustc/middle/borrowck.rs index e2f7ba20642..414890cbd7c 100644 --- a/src/rustc/middle/borrowck.rs +++ b/src/rustc/middle/borrowck.rs @@ -396,10 +396,10 @@ type req_maps = { pure_map: HashMap }; -fn save_and_restore(save_and_restore_t: &mut T, f: fn() -> U) -> U { - let old_save_and_restore_t = *save_and_restore_t; +fn save_and_restore(&save_and_restore_t: T, f: fn() -> U) -> U { + let old_save_and_restore_t = save_and_restore_t; let u <- f(); - *save_and_restore_t = old_save_and_restore_t; + save_and_restore_t = old_save_and_restore_t; move u } diff --git a/src/rustc/middle/borrowck/check_loans.rs b/src/rustc/middle/borrowck/check_loans.rs index 51beff021fa..0c79c0fcd7f 100644 --- a/src/rustc/middle/borrowck/check_loans.rs +++ b/src/rustc/middle/borrowck/check_loans.rs @@ -529,7 +529,8 @@ impl check_loan_ctxt { ast::by_move => { self.check_move_out(*arg); } - ast::by_ref | ast::by_copy | ast::by_val => { + ast::by_mutbl_ref | ast::by_ref | + ast::by_copy | ast::by_val => { } } } @@ -541,9 +542,9 @@ fn check_loans_in_fn(fk: visit::fn_kind, decl: ast::fn_decl, body: ast::blk, visitor: visit::vt) { debug!("purity on entry=%?", copy self.declared_purity); - do save_and_restore(&mut(self.in_ctor)) { - do save_and_restore(&mut(self.declared_purity)) { - do save_and_restore(&mut(self.fn_args)) { + do save_and_restore(self.in_ctor) { + do save_and_restore(self.declared_purity) { + do save_and_restore(self.fn_args) { let is_stack_closure = self.is_stack_closure(id); let fty = ty::node_id_to_type(self.tcx(), id); self.declared_purity = ty::determine_inherited_purity( @@ -666,7 +667,7 @@ fn check_loans_in_expr(expr: @ast::expr, fn check_loans_in_block(blk: ast::blk, &&self: check_loan_ctxt, vt: visit::vt) { - do save_and_restore(&mut(self.declared_purity)) { + do save_and_restore(self.declared_purity) { self.check_for_conflicting_loans(blk.node.id); match blk.node.rules { diff --git a/src/rustc/middle/borrowck/gather_loans.rs b/src/rustc/middle/borrowck/gather_loans.rs index 5dfde8c9af6..327db51518b 100644 --- a/src/rustc/middle/borrowck/gather_loans.rs +++ b/src/rustc/middle/borrowck/gather_loans.rs @@ -115,6 +115,10 @@ fn req_loans_in_expr(ex: @ast::expr, let scope_r = ty::re_scope(ex.id); for vec::each2(args, arg_tys) |arg, arg_ty| { match ty::resolved_mode(self.tcx(), arg_ty.mode) { + ast::by_mutbl_ref => { + let arg_cmt = self.bccx.cat_expr(*arg); + self.guarantee_valid(arg_cmt, m_mutbl, scope_r); + } ast::by_ref => { let arg_cmt = self.bccx.cat_expr(*arg); self.guarantee_valid(arg_cmt, m_imm, scope_r); diff --git a/src/rustc/middle/kind.rs b/src/rustc/middle/kind.rs index 1da145cabc9..9aff382775c 100644 --- a/src/rustc/middle/kind.rs +++ b/src/rustc/middle/kind.rs @@ -319,13 +319,13 @@ fn check_expr(e: @expr, cx: ctx, v: visit::vt) { for exprs.each |expr| { maybe_copy(cx, *expr, None); } } expr_call(f, args, _) => { - let mut i = 0; + let mut i = 0u; for ty::ty_fn_args(ty::expr_ty(cx.tcx, f)).each |arg_t| { match ty::arg_mode(cx.tcx, *arg_t) { by_copy => maybe_copy(cx, args[i], None), - by_ref | by_val | by_move => () + by_ref | by_val | by_mutbl_ref | by_move => () } - i += 1; + i += 1u; } } expr_field(lhs, _, _) => { @@ -335,7 +335,7 @@ fn check_expr(e: @expr, cx: ctx, v: visit::vt) { Some(ref mme) => { match ty::arg_mode(cx.tcx, mme.self_arg) { by_copy => maybe_copy(cx, lhs, None), - by_ref | by_val | by_move => () + by_ref | by_val | by_mutbl_ref | by_move => () } } _ => () @@ -465,10 +465,18 @@ fn check_imm_free_var(cx: ctx, def: def, sp: span) { cx.tcx.sess.span_err(sp, msg); } } + def_arg(_, mode) => { + match ty::resolved_mode(cx.tcx, mode) { + by_ref | by_val | by_move | by_copy => { /* ok */ } + by_mutbl_ref => { + cx.tcx.sess.span_err(sp, msg); + } + } + } def_upvar(_, def1, _, _) => { check_imm_free_var(cx, *def1, sp); } - def_arg(*) | def_binding(*) | def_self(*) => { /*ok*/ } + def_binding(*) | def_self(*) => { /*ok*/ } _ => { cx.tcx.sess.span_bug( sp, diff --git a/src/rustc/middle/liveness.rs b/src/rustc/middle/liveness.rs index bdf808e8568..69b325b03a4 100644 --- a/src/rustc/middle/liveness.rs +++ b/src/rustc/middle/liveness.rs @@ -398,8 +398,8 @@ impl IrMaps { (*v).push(id); } - Arg(_, _, by_ref) | Arg(_, _, by_val) | Self | Field(_) | - ImplicitRet | + Arg(_, _, by_ref) | Arg(_, _, by_mutbl_ref) | + Arg(_, _, by_val) | Self | Field(_) | ImplicitRet | Local(LocalInfo {kind: FromMatch(bind_by_implicit_ref), _}) => { debug!("--but it is not owned"); } @@ -831,9 +831,9 @@ impl Liveness { let mut changed = false; do self.indices2(ln, succ_ln) |idx, succ_idx| { changed |= copy_if_invalid(copy self.users[succ_idx].reader, - &mut self.users[idx].reader); + self.users[idx].reader); changed |= copy_if_invalid(copy self.users[succ_idx].writer, - &mut self.users[idx].writer); + self.users[idx].writer); if self.users[succ_idx].used && !self.users[idx].used { self.users[idx].used = true; changed = true; @@ -844,10 +844,10 @@ impl Liveness { ln.to_str(), self.ln_str(succ_ln), first_merge, changed); return changed; - fn copy_if_invalid(src: LiveNode, dst: &mut LiveNode) -> bool { + fn copy_if_invalid(src: LiveNode, &dst: LiveNode) -> bool { if src.is_valid() { if !dst.is_valid() { - *dst = src; + dst = src; return true; } } @@ -919,7 +919,7 @@ impl Liveness { // inputs passed by & mode should be considered live on exit: for decl.inputs.each |arg| { match ty::resolved_mode(self.tcx, arg.mode) { - by_ref | by_val => { + by_mutbl_ref | by_ref | by_val => { // These are "non-owned" modes, so register a read at // the end. This will prevent us from moving out of // such variables but also prevent us from registering @@ -1573,7 +1573,7 @@ fn check_expr(expr: @expr, &&self: @Liveness, vt: vt<@Liveness>) { let targs = ty::ty_fn_args(ty::expr_ty(self.tcx, f)); for vec::each2(args, targs) |arg_expr, arg_ty| { match ty::resolved_mode(self.tcx, arg_ty.mode) { - by_val | by_copy | by_ref => {} + by_val | by_copy | by_ref | by_mutbl_ref => {} by_move => { self.check_move_from_expr(*arg_expr, vt); } @@ -1866,6 +1866,19 @@ impl @Liveness { for decl.inputs.each |arg| { let var = self.variable(arg.id, arg.ty.span); match ty::resolved_mode(self.tcx, arg.mode) { + by_mutbl_ref => { + // for mutable reference arguments, something like + // x = 1; + // is not worth warning about, as it has visible + // side effects outside the fn. + match self.assigned_on_entry(entry_ln, var) { + Some(_) => { /*ok*/ } + None => { + // but if it is not written, it ought to be used + self.warn_about_unused(sp, entry_ln, var); + } + } + } by_val | by_ref | by_move | by_copy => { self.warn_about_unused(sp, entry_ln, var); } diff --git a/src/rustc/middle/mem_categorization.rs b/src/rustc/middle/mem_categorization.rs index dc5874ea2cf..fe465db1312 100644 --- a/src/rustc/middle/mem_categorization.rs +++ b/src/rustc/middle/mem_categorization.rs @@ -523,6 +523,9 @@ impl &mem_categorization_ctxt { // m: mutability of the argument // lp: loan path, must be none for aliasable things let {m,lp} = match ty::resolved_mode(self.tcx, mode) { + ast::by_mutbl_ref => { + {m: m_mutbl, lp: None} + } ast::by_move | ast::by_copy => { {m: m_imm, lp: Some(@lp_arg(vid))} } diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs index 368a523306e..ce596586ddc 100644 --- a/src/rustc/middle/trans/base.rs +++ b/src/rustc/middle/trans/base.rs @@ -1503,7 +1503,7 @@ fn copy_args_to_allocas(fcx: fn_ctxt, // the event it's not truly needed. let llarg; match ty::resolved_mode(tcx, arg_ty.mode) { - ast::by_ref => { + ast::by_ref | ast::by_mutbl_ref => { llarg = raw_llarg; } ast::by_move | ast::by_copy => { diff --git a/src/rustc/middle/trans/callee.rs b/src/rustc/middle/trans/callee.rs index c851c5bc725..e7b4dd171e3 100644 --- a/src/rustc/middle/trans/callee.rs +++ b/src/rustc/middle/trans/callee.rs @@ -592,7 +592,7 @@ fn trans_arg_expr(bcx: block, DoAutorefArg => { val = arg_datum.to_ref_llval(bcx); } DontAutorefArg => { match arg_mode { - ast::by_ref => { + ast::by_ref | ast::by_mutbl_ref => { val = arg_datum.to_ref_llval(bcx); } diff --git a/src/rustc/middle/trans/reflect.rs b/src/rustc/middle/trans/reflect.rs index ef1cc15f5c0..cdd11ee85c5 100644 --- a/src/rustc/middle/trans/reflect.rs +++ b/src/rustc/middle/trans/reflect.rs @@ -208,6 +208,7 @@ impl reflector { ast::expl(e) => match e { ast::by_ref => 1u, ast::by_val => 2u, + ast::by_mutbl_ref => 3u, ast::by_move => 4u, ast::by_copy => 5u } diff --git a/src/rustc/middle/trans/shape.rs b/src/rustc/middle/trans/shape.rs index e7dfac42bec..cf58b5b51c4 100644 --- a/src/rustc/middle/trans/shape.rs +++ b/src/rustc/middle/trans/shape.rs @@ -49,12 +49,12 @@ fn mk_ctxt(llmod: ModuleRef) -> ctxt { return {mut next_tag_id: 0u16, pad: 0u16, pad2: 0u32}; } -fn add_u16(dest: &mut ~[u8], val: u16) { - *dest += ~[(val & 0xffu16) as u8, (val >> 8u16) as u8]; +fn add_u16(&dest: ~[u8], val: u16) { + dest += ~[(val & 0xffu16) as u8, (val >> 8u16) as u8]; } -fn add_substr(dest: &mut ~[u8], src: ~[u8]) { +fn add_substr(&dest: ~[u8], src: ~[u8]) { add_u16(dest, vec::len(src) as u16); - *dest += src; + dest += src; } diff --git a/src/rustc/middle/trans/type_use.rs b/src/rustc/middle/trans/type_use.rs index 9140ea94e9c..6bd3c22f626 100644 --- a/src/rustc/middle/trans/type_use.rs +++ b/src/rustc/middle/trans/type_use.rs @@ -53,7 +53,7 @@ fn type_uses_for(ccx: @crate_ctxt, fn_id: def_id, n_tps: uint) by_val | by_move | by_copy => { type_needs(cx, use_repr, arg.ty); } - by_ref => {} + by_ref | by_mutbl_ref => {} } } } diff --git a/src/rustc/middle/trans/uniq.rs b/src/rustc/middle/trans/uniq.rs index 50ea363ace2..6ab91c4a1d7 100644 --- a/src/rustc/middle/trans/uniq.rs +++ b/src/rustc/middle/trans/uniq.rs @@ -3,6 +3,7 @@ use lib::llvm::ValueRef; use common::*; use build::*; use base::*; +use shape::llsize_of; use datum::immediate_rvalue; export make_free_glue, autoderef, duplicate; -- cgit 1.4.1-3-g733a5 From 45345bda6ab439599838bbf3df0c524d86c8da2a Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Fri, 5 Oct 2012 16:17:10 -0700 Subject: Remove uses of mutable ref mode. It's still in the compiler right now, but warned about --- src/libcore/cmath.rs | 16 ++++++++-------- src/libstd/time.rs | 30 +++++++++++++++++++++++++++++- src/libsyntax/parse/comments.rs | 28 ++++++++++++++-------------- src/libsyntax/parse/eval.rs | 10 +++++----- src/libsyntax/parse/parser.rs | 6 ++++-- src/libsyntax/parse/token.rs | 2 +- src/rustc/metadata/encoder.rs | 2 +- src/rustc/middle/borrowck.rs | 6 +++--- src/rustc/middle/borrowck/check_loans.rs | 8 ++++---- src/rustc/middle/liveness.rs | 8 ++++---- src/rustc/middle/trans/uniq.rs | 1 - 11 files changed, 73 insertions(+), 44 deletions(-) (limited to 'src/libstd') diff --git a/src/libcore/cmath.rs b/src/libcore/cmath.rs index 9a9a7cb3112..b0aeb78afaa 100644 --- a/src/libcore/cmath.rs +++ b/src/libcore/cmath.rs @@ -40,15 +40,15 @@ pub extern mod c_double { #[link_name="fmax"] pure fn fmax(a: c_double, b: c_double) -> c_double; #[link_name="fmin"] pure fn fmin(a: c_double, b: c_double) -> c_double; pure fn nextafter(x: c_double, y: c_double) -> c_double; - pure fn frexp(n: c_double, &value: c_int) -> c_double; + pure fn frexp(n: c_double, value: &mut c_int) -> c_double; pure fn hypot(x: c_double, y: c_double) -> c_double; pure fn ldexp(x: c_double, n: c_int) -> c_double; #[cfg(unix)] #[link_name="lgamma_r"] pure fn lgamma(n: c_double, - &sign: c_int) -> c_double; + sign: &mut c_int) -> c_double; #[cfg(windows)] #[link_name="__lgamma_r"] pure fn lgamma(n: c_double, - &sign: c_int) -> c_double; + sign: &mut c_int) -> c_double; // renamed: log is a reserved keyword; ln seems more natural, too #[link_name="log"] pure fn ln(n: c_double) -> c_double; // renamed: "logb" /often/ is confused for log2 by beginners @@ -58,7 +58,7 @@ pub extern mod c_double { pure fn log10(n: c_double) -> c_double; pure fn log2(n: c_double) -> c_double; #[link_name="ilogb"] pure fn ilog_radix(n: c_double) -> c_int; - pure fn modf(n: c_double, &iptr: c_double) -> c_double; + pure fn modf(n: c_double, iptr: &mut c_double) -> c_double; pure fn pow(n: c_double, e: c_double) -> c_double; // FIXME (#1379): enable when rounding modes become available // pure fn rint(n: c_double) -> c_double; @@ -110,7 +110,7 @@ pub extern mod c_float { #[link_name="fdimf"] pure fn abs_sub(a: c_float, b: c_float) -> c_float; #[link_name="floorf"] pure fn floor(n: c_float) -> c_float; #[link_name="frexpf"] pure fn frexp(n: c_float, - &value: c_int) -> c_float; + value: &mut c_int) -> c_float; #[link_name="fmaf"] pure fn mul_add(a: c_float, b: c_float, c: c_float) -> c_float; #[link_name="fmaxf"] pure fn fmax(a: c_float, b: c_float) -> c_float; @@ -122,11 +122,11 @@ pub extern mod c_float { #[cfg(unix)] #[link_name="lgammaf_r"] pure fn lgamma(n: c_float, - &sign: c_int) -> c_float; + sign: &mut c_int) -> c_float; #[cfg(windows)] #[link_name="__lgammaf_r"] pure fn lgamma(n: c_float, - &sign: c_int) -> c_float; + sign: &mut c_int) -> c_float; #[link_name="logf"] pure fn ln(n: c_float) -> c_float; #[link_name="logbf"] pure fn log_radix(n: c_float) -> c_float; @@ -135,7 +135,7 @@ pub extern mod c_float { #[link_name="log10f"] pure fn log10(n: c_float) -> c_float; #[link_name="ilogbf"] pure fn ilog_radix(n: c_float) -> c_int; #[link_name="modff"] pure fn modf(n: c_float, - &iptr: c_float) -> c_float; + iptr: &mut c_float) -> c_float; #[link_name="powf"] pure fn pow(n: c_float, e: c_float) -> c_float; // FIXME (#1379): enable when rounding modes become available // #[link_name="rintf"] pure fn rint(n: c_float) -> c_float; diff --git a/src/libstd/time.rs b/src/libstd/time.rs index 627a3b8eeae..8fa1e0cf3f0 100644 --- a/src/libstd/time.rs +++ b/src/libstd/time.rs @@ -7,9 +7,18 @@ use result::{Result, Ok, Err}; #[abi = "cdecl"] extern mod rustrt { - #[legacy_exports]; + #[legacy_exports] + #[cfg(stage0)] fn get_time(&sec: i64, &nsec: i32); + #[cfg(stage1)] + #[cfg(stage2)] + fn get_time(sec: &mut i64, nsec: &mut i32); + + #[cfg(stage0)] fn precise_time_ns(&ns: u64); + #[cfg(stage1)] + #[cfg(stage2)] + fn precise_time_ns(ns: &mut u64); fn rust_tzset(); // FIXME: The i64 values can be passed by-val when #2064 is fixed. @@ -33,22 +42,41 @@ impl Timespec : Eq { * Returns the current time as a `timespec` containing the seconds and * nanoseconds since 1970-01-01T00:00:00Z. */ +#[cfg(stage0)] pub fn get_time() -> Timespec { let mut sec = 0i64; let mut nsec = 0i32; rustrt::get_time(sec, nsec); return {sec: sec, nsec: nsec}; } +#[cfg(stage1)] +#[cfg(stage2)] +pub fn get_time() -> Timespec { + let mut sec = 0i64; + let mut nsec = 0i32; + rustrt::get_time(&mut sec, &mut nsec); + return {sec: sec, nsec: nsec}; +} + /** * Returns the current value of a high-resolution performance counter * in nanoseconds since an unspecified epoch. */ +#[cfg(stage0)] pub fn precise_time_ns() -> u64 { let mut ns = 0u64; rustrt::precise_time_ns(ns); ns } +#[cfg(stage1)] +#[cfg(stage2)] +pub fn precise_time_ns() -> u64 { + let mut ns = 0u64; + rustrt::precise_time_ns(&mut ns); + ns +} + /** * Returns the current value of a high-resolution performance counter diff --git a/src/libsyntax/parse/comments.rs b/src/libsyntax/parse/comments.rs index cb8416501b3..4f265e1919c 100644 --- a/src/libsyntax/parse/comments.rs +++ b/src/libsyntax/parse/comments.rs @@ -127,14 +127,14 @@ fn consume_non_eol_whitespace(rdr: string_reader) { } } -fn push_blank_line_comment(rdr: string_reader, &comments: ~[cmnt]) { +fn push_blank_line_comment(rdr: string_reader, comments: &mut ~[cmnt]) { debug!(">>> blank-line comment"); let v: ~[~str] = ~[]; comments.push({style: blank_line, lines: v, pos: rdr.chpos}); } fn consume_whitespace_counting_blank_lines(rdr: string_reader, - &comments: ~[cmnt]) { + comments: &mut ~[cmnt]) { while is_whitespace(rdr.curr) && !is_eof(rdr) { if rdr.col == 0u && rdr.curr == '\n' { push_blank_line_comment(rdr, comments); @@ -145,7 +145,7 @@ fn consume_whitespace_counting_blank_lines(rdr: string_reader, fn read_shebang_comment(rdr: string_reader, code_to_the_left: bool, - &comments: ~[cmnt]) { + comments: &mut ~[cmnt]) { debug!(">>> shebang comment"); let p = rdr.chpos; debug!("<<< shebang comment"); @@ -157,7 +157,7 @@ fn read_shebang_comment(rdr: string_reader, code_to_the_left: bool, } fn read_line_comments(rdr: string_reader, code_to_the_left: bool, - &comments: ~[cmnt]) { + comments: &mut ~[cmnt]) { debug!(">>> line comments"); let p = rdr.chpos; let mut lines: ~[~str] = ~[]; @@ -188,8 +188,8 @@ fn all_whitespace(s: ~str, begin: uint, end: uint) -> bool { return true; } -fn trim_whitespace_prefix_and_push_line(&lines: ~[~str], - s: ~str, col: uint) unsafe { +fn trim_whitespace_prefix_and_push_line(lines: &mut ~[~str], + s: ~str, col: uint) { let mut s1; let len = str::len(s); if all_whitespace(s, 0u, uint::min(len, col)) { @@ -202,7 +202,7 @@ fn trim_whitespace_prefix_and_push_line(&lines: ~[~str], } fn read_block_comment(rdr: string_reader, code_to_the_left: bool, - &comments: ~[cmnt]) { + comments: &mut ~[cmnt]) { debug!(">>> block comment"); let p = rdr.chpos; let mut lines: ~[~str] = ~[]; @@ -228,7 +228,7 @@ fn read_block_comment(rdr: string_reader, code_to_the_left: bool, debug!("=== block comment level %d", level); if is_eof(rdr) {(rdr as reader).fatal(~"unterminated block comment");} if rdr.curr == '\n' { - trim_whitespace_prefix_and_push_line(lines, curr_line, col); + trim_whitespace_prefix_and_push_line(&mut lines, curr_line, col); curr_line = ~""; bump(rdr); } else { @@ -248,8 +248,8 @@ fn read_block_comment(rdr: string_reader, code_to_the_left: bool, } } } - if str::len(curr_line) != 0u { - trim_whitespace_prefix_and_push_line(lines, curr_line, col); + if str::len(curr_line) != 0 { + trim_whitespace_prefix_and_push_line(&mut lines, curr_line, col); } let mut style = if code_to_the_left { trailing } else { isolated }; consume_non_eol_whitespace(rdr); @@ -267,7 +267,7 @@ fn peeking_at_comment(rdr: string_reader) -> bool { } fn consume_comment(rdr: string_reader, code_to_the_left: bool, - &comments: ~[cmnt]) { + comments: &mut ~[cmnt]) { debug!(">>> consume comment"); if rdr.curr == '/' && nextch(rdr) == '/' { read_line_comments(rdr, code_to_the_left, comments); @@ -299,11 +299,11 @@ fn gather_comments_and_literals(span_diagnostic: diagnostic::span_handler, consume_non_eol_whitespace(rdr); if rdr.curr == '\n' { code_to_the_left = false; - consume_whitespace_counting_blank_lines(rdr, comments); + consume_whitespace_counting_blank_lines(rdr, &mut comments); } while peeking_at_comment(rdr) { - consume_comment(rdr, code_to_the_left, comments); - consume_whitespace_counting_blank_lines(rdr, comments); + consume_comment(rdr, code_to_the_left, &mut comments); + consume_whitespace_counting_blank_lines(rdr, &mut comments); } break; } diff --git a/src/libsyntax/parse/eval.rs b/src/libsyntax/parse/eval.rs index 14dc490346e..c9106028491 100644 --- a/src/libsyntax/parse/eval.rs +++ b/src/libsyntax/parse/eval.rs @@ -10,8 +10,8 @@ type ctx = fn eval_crate_directives(cx: ctx, cdirs: ~[@ast::crate_directive], prefix: &Path, - &view_items: ~[@ast::view_item], - &items: ~[@ast::item]) { + view_items: &mut~[@ast::view_item], + items: &mut~[@ast::item]) { for cdirs.each |sub_cdir| { eval_crate_directive(cx, *sub_cdir, prefix, view_items, items); } @@ -24,7 +24,7 @@ fn eval_crate_directives_to_mod(cx: ctx, cdirs: ~[@ast::crate_directive], = parse_companion_mod(cx, prefix, suffix); let mut view_items: ~[@ast::view_item] = ~[]; let mut items: ~[@ast::item] = ~[]; - eval_crate_directives(cx, cdirs, prefix, view_items, items); + eval_crate_directives(cx, cdirs, prefix, &mut view_items, &mut items); return ({view_items: vec::append(view_items, cview_items), items: vec::append(items, citems)}, cattrs); @@ -82,8 +82,8 @@ fn cdir_path_opt(default: ~str, attrs: ~[ast::attribute]) -> ~str { } fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: &Path, - &view_items: ~[@ast::view_item], - &items: ~[@ast::item]) { + view_items: &mut ~[@ast::view_item], + items: &mut ~[@ast::item]) { match cdir.node { ast::cdir_src_mod(vis, id, attrs) => { let file_path = Path(cdir_path_opt( diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 1a87d7fed69..bc0beec5b36 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -1276,7 +1276,8 @@ impl parser { return match self.token { token::LPAREN | token::LBRACE | token::LBRACKET => { - let ket = token::flip_delimiter(self.token); + // tjc: ?????? + let ket = token::flip_delimiter(copy self.token); tt_delim(vec::append( ~[parse_tt_tok(self, true)], vec::append( @@ -1297,7 +1298,8 @@ impl parser { return match self.token { token::LBRACE | token::LPAREN | token::LBRACKET => { self.parse_matcher_subseq(name_idx, copy self.token, - token::flip_delimiter(self.token)) + // tjc: not sure why we need a copy + token::flip_delimiter(copy self.token)) } _ => self.fatal(~"expected open delimiter") } diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index a328ff1bdf6..99b789cf63f 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -230,7 +230,7 @@ pure fn can_begin_expr(t: token) -> bool { } /// what's the opposite delimiter? -fn flip_delimiter(&t: token::token) -> token::token { +fn flip_delimiter(t: token::token) -> token::token { match t { token::LPAREN => token::RPAREN, token::LBRACE => token::RBRACE, diff --git a/src/rustc/metadata/encoder.rs b/src/rustc/metadata/encoder.rs index 597640ef410..fe432edeec6 100644 --- a/src/rustc/metadata/encoder.rs +++ b/src/rustc/metadata/encoder.rs @@ -117,7 +117,7 @@ fn encode_mutability(ebml_w: ebml::Writer, mt: class_mutability) { type entry = {val: T, pos: uint}; fn add_to_index(ecx: @encode_ctxt, ebml_w: ebml::Writer, path: &[ident], - &index: ~[entry<~str>], name: ident) { + index: &mut ~[entry<~str>], name: ident) { let mut full_path = ~[]; full_path.push_all(path); full_path.push(name); diff --git a/src/rustc/middle/borrowck.rs b/src/rustc/middle/borrowck.rs index 414890cbd7c..e2f7ba20642 100644 --- a/src/rustc/middle/borrowck.rs +++ b/src/rustc/middle/borrowck.rs @@ -396,10 +396,10 @@ type req_maps = { pure_map: HashMap }; -fn save_and_restore(&save_and_restore_t: T, f: fn() -> U) -> U { - let old_save_and_restore_t = save_and_restore_t; +fn save_and_restore(save_and_restore_t: &mut T, f: fn() -> U) -> U { + let old_save_and_restore_t = *save_and_restore_t; let u <- f(); - save_and_restore_t = old_save_and_restore_t; + *save_and_restore_t = old_save_and_restore_t; move u } diff --git a/src/rustc/middle/borrowck/check_loans.rs b/src/rustc/middle/borrowck/check_loans.rs index 0c79c0fcd7f..5ff2a8933a9 100644 --- a/src/rustc/middle/borrowck/check_loans.rs +++ b/src/rustc/middle/borrowck/check_loans.rs @@ -542,9 +542,9 @@ fn check_loans_in_fn(fk: visit::fn_kind, decl: ast::fn_decl, body: ast::blk, visitor: visit::vt) { debug!("purity on entry=%?", copy self.declared_purity); - do save_and_restore(self.in_ctor) { - do save_and_restore(self.declared_purity) { - do save_and_restore(self.fn_args) { + do save_and_restore(&mut(self.in_ctor)) { + do save_and_restore(&mut(self.declared_purity)) { + do save_and_restore(&mut(self.fn_args)) { let is_stack_closure = self.is_stack_closure(id); let fty = ty::node_id_to_type(self.tcx(), id); self.declared_purity = ty::determine_inherited_purity( @@ -667,7 +667,7 @@ fn check_loans_in_expr(expr: @ast::expr, fn check_loans_in_block(blk: ast::blk, &&self: check_loan_ctxt, vt: visit::vt) { - do save_and_restore(self.declared_purity) { + do save_and_restore(&mut(self.declared_purity)) { self.check_for_conflicting_loans(blk.node.id); match blk.node.rules { diff --git a/src/rustc/middle/liveness.rs b/src/rustc/middle/liveness.rs index 69b325b03a4..6b39a21a7ba 100644 --- a/src/rustc/middle/liveness.rs +++ b/src/rustc/middle/liveness.rs @@ -831,9 +831,9 @@ impl Liveness { let mut changed = false; do self.indices2(ln, succ_ln) |idx, succ_idx| { changed |= copy_if_invalid(copy self.users[succ_idx].reader, - self.users[idx].reader); + &mut self.users[idx].reader); changed |= copy_if_invalid(copy self.users[succ_idx].writer, - self.users[idx].writer); + &mut self.users[idx].writer); if self.users[succ_idx].used && !self.users[idx].used { self.users[idx].used = true; changed = true; @@ -844,10 +844,10 @@ impl Liveness { ln.to_str(), self.ln_str(succ_ln), first_merge, changed); return changed; - fn copy_if_invalid(src: LiveNode, &dst: LiveNode) -> bool { + fn copy_if_invalid(src: LiveNode, dst: &mut LiveNode) -> bool { if src.is_valid() { if !dst.is_valid() { - dst = src; + *dst = src; return true; } } diff --git a/src/rustc/middle/trans/uniq.rs b/src/rustc/middle/trans/uniq.rs index 6ab91c4a1d7..50ea363ace2 100644 --- a/src/rustc/middle/trans/uniq.rs +++ b/src/rustc/middle/trans/uniq.rs @@ -3,7 +3,6 @@ use lib::llvm::ValueRef; use common::*; use build::*; use base::*; -use shape::llsize_of; use datum::immediate_rvalue; export make_free_glue, autoderef, duplicate; -- cgit 1.4.1-3-g733a5 From 05999290e23ad5f57bdfbfd56bde694a627c342e Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Fri, 5 Oct 2012 17:19:50 -0700 Subject: Finally removing all uses of by-mut-ref The code for the mode itself is still there. --- src/libcore/at_vec.rs | 18 ------- src/libcore/vec.rs | 46 ----------------- src/libstd/arena.rs | 115 ------------------------------------------ src/libstd/time.rs | 33 ++---------- src/libsyntax/parse/parser.rs | 3 +- 5 files changed, 6 insertions(+), 209 deletions(-) (limited to 'src/libstd') diff --git a/src/libcore/at_vec.rs b/src/libcore/at_vec.rs index 8c023a7cb4c..ce3dec89e41 100644 --- a/src/libcore/at_vec.rs +++ b/src/libcore/at_vec.rs @@ -21,10 +21,6 @@ extern mod rustrt { #[abi = "rust-intrinsic"] extern mod rusti { #[legacy_exports]; - #[cfg(stage0)] - fn move_val_init(&dst: T, -src: T); - #[cfg(stage1)] - #[cfg(stage2)] fn move_val_init(dst: &mut T, -src: T); } @@ -181,20 +177,6 @@ pub mod raw { } } - // This doesn't bother to make sure we have space. - #[cfg(stage0)] - #[inline(always)] // really pretty please - pub unsafe fn push_fast(v: &mut @[const T], initval: T) { - let repr: **VecRepr = ::cast::reinterpret_cast(&v); - let fill = (**repr).unboxed.fill; - (**repr).unboxed.fill += sys::size_of::(); - let p = addr_of(&((**repr).unboxed.data)); - let p = ptr::offset(p, fill) as *mut T; - rusti::move_val_init(*p, move initval); - } - // This doesn't bother to make sure we have space. - #[cfg(stage1)] - #[cfg(stage2)] #[inline(always)] // really pretty please pub unsafe fn push_fast(v: &mut @[const T], initval: T) { let repr: **VecRepr = ::cast::reinterpret_cast(&v); diff --git a/src/libcore/vec.rs b/src/libcore/vec.rs index ce1193aa730..3a2b73f5b5b 100644 --- a/src/libcore/vec.rs +++ b/src/libcore/vec.rs @@ -18,10 +18,6 @@ extern mod rustrt { #[abi = "rust-intrinsic"] extern mod rusti { - #[cfg(stage0)] - fn move_val_init(&dst: T, -src: T); - #[cfg(stage1)] - #[cfg(stage2)] fn move_val_init(dst: &mut T, -src: T); } @@ -103,23 +99,6 @@ pub pure fn len(v: &[const T]) -> uint { * Creates an immutable vector of size `n_elts` and initializes the elements * to the value returned by the function `op`. */ -#[cfg(stage0)] -pub pure fn from_fn(n_elts: uint, op: iter::InitOp) -> ~[T] { - unsafe { - let mut v = with_capacity(n_elts); - do as_mut_buf(v) |p, _len| { - let mut i: uint = 0u; - while i < n_elts { - rusti::move_val_init(*ptr::mut_offset(p, i), op(i)); - i += 1u; - } - } - raw::set_len(&mut v, n_elts); - return move v; - } -} -#[cfg(stage1)] -#[cfg(stage2)] pub pure fn from_fn(n_elts: uint, op: iter::InitOp) -> ~[T] { unsafe { let mut v = with_capacity(n_elts); @@ -503,19 +482,6 @@ pub fn push(v: &mut ~[T], initval: T) { } } -#[cfg(stage0)] -// This doesn't bother to make sure we have space. -#[inline(always)] // really pretty please -unsafe fn push_fast(v: &mut ~[T], initval: T) { - let repr: **raw::VecRepr = ::cast::transmute(v); - let fill = (**repr).unboxed.fill; - (**repr).unboxed.fill += sys::size_of::(); - let p = addr_of(&((**repr).unboxed.data)); - let p = ptr::offset(p, fill) as *mut T; - rusti::move_val_init(*p, move initval); -} -#[cfg(stage1)] -#[cfg(stage2)] // This doesn't bother to make sure we have space. #[inline(always)] // really pretty please unsafe fn push_fast(v: &mut ~[T], initval: T) { @@ -1793,18 +1759,6 @@ pub mod raw { as_const_buf(v, |p, _len| *ptr::const_offset(p, i)) } - #[cfg(stage0)] - #[inline(always)] - pub unsafe fn init_elem(v: &[mut T], i: uint, val: T) { - let mut box = Some(move val); - do as_mut_buf(v) |p, _len| { - let mut box2 = None; - box2 <-> box; - rusti::move_val_init(*ptr::mut_offset(p, i), - option::unwrap(move box2)); - } - } - #[cfg(stage1)] /** * Unchecked vector index assignment. Does not drop the * old value and hence is only suitable when the vector diff --git a/src/libstd/arena.rs b/src/libstd/arena.rs index 69478b3e731..6a2ac88f714 100644 --- a/src/libstd/arena.rs +++ b/src/libstd/arena.rs @@ -31,10 +31,6 @@ use libc::size_t; #[abi = "rust-intrinsic"] extern mod rusti { - #[cfg(stage0)] - fn move_val_init(&dst: T, -src: T); - #[cfg(stage1)] - #[cfg(stage2)] fn move_val_init(dst: &mut T, -src: T); fn needs_drop() -> bool; } @@ -132,117 +128,6 @@ unsafe fn un_bitpack_tydesc_ptr(p: uint) -> (*TypeDesc, bool) { (reinterpret_cast(&(p & !1)), p & 1 == 1) } -// tjc: Can get rid of the duplication post-snapshot -#[cfg(stage0)] -// The duplication between the POD and non-POD functions is annoying. -impl &Arena { - // Functions for the POD part of the arena - fn alloc_pod_grow(n_bytes: uint, align: uint) -> *u8 { - // Allocate a new chunk. - let chunk_size = at_vec::capacity(self.pod_head.data); - let new_min_chunk_size = uint::max(n_bytes, chunk_size); - self.chunks = @Cons(copy self.pod_head, self.chunks); - self.pod_head = - chunk(uint::next_power_of_two(new_min_chunk_size + 1u), true); - - return self.alloc_pod_inner(n_bytes, align); - } - - #[inline(always)] - fn alloc_pod_inner(n_bytes: uint, align: uint) -> *u8 { - let head = &mut self.pod_head; - - let start = round_up_to(head.fill, align); - let end = start + n_bytes; - if end > at_vec::capacity(head.data) { - return self.alloc_pod_grow(n_bytes, align); - } - head.fill = end; - - //debug!("idx = %u, size = %u, align = %u, fill = %u", - // start, n_bytes, align, head.fill); - - unsafe { - ptr::offset(vec::raw::to_ptr(head.data), start) - } - } - - #[inline(always)] - fn alloc_pod(op: fn() -> T) -> &self/T { - unsafe { - let tydesc = sys::get_type_desc::(); - let ptr = self.alloc_pod_inner((*tydesc).size, (*tydesc).align); - let ptr: *mut T = reinterpret_cast(&ptr); - rusti::move_val_init(*ptr, op()); - return reinterpret_cast(&ptr); - } - } - - // Functions for the non-POD part of the arena - fn alloc_nonpod_grow(n_bytes: uint, align: uint) -> (*u8, *u8) { - // Allocate a new chunk. - let chunk_size = at_vec::capacity(self.head.data); - let new_min_chunk_size = uint::max(n_bytes, chunk_size); - self.chunks = @Cons(copy self.head, self.chunks); - self.head = - chunk(uint::next_power_of_two(new_min_chunk_size + 1u), false); - - return self.alloc_nonpod_inner(n_bytes, align); - } - - #[inline(always)] - fn alloc_nonpod_inner(n_bytes: uint, align: uint) -> (*u8, *u8) { - let head = &mut self.head; - - let tydesc_start = head.fill; - let after_tydesc = head.fill + sys::size_of::<*TypeDesc>(); - let start = round_up_to(after_tydesc, align); - let end = start + n_bytes; - if end > at_vec::capacity(head.data) { - return self.alloc_nonpod_grow(n_bytes, align); - } - head.fill = round_up_to(end, sys::pref_align_of::<*TypeDesc>()); - - //debug!("idx = %u, size = %u, align = %u, fill = %u", - // start, n_bytes, align, head.fill); - - unsafe { - let buf = vec::raw::to_ptr(head.data); - return (ptr::offset(buf, tydesc_start), ptr::offset(buf, start)); - } - } - - #[inline(always)] - fn alloc_nonpod(op: fn() -> T) -> &self/T { - unsafe { - let tydesc = sys::get_type_desc::(); - let (ty_ptr, ptr) = - self.alloc_nonpod_inner((*tydesc).size, (*tydesc).align); - let ty_ptr: *mut uint = reinterpret_cast(&ty_ptr); - let ptr: *mut T = reinterpret_cast(&ptr); - // Write in our tydesc along with a bit indicating that it - // has *not* been initialized yet. - *ty_ptr = reinterpret_cast(&tydesc); - // Actually initialize it - rusti::move_val_init(*ptr, op()); - // Now that we are done, update the tydesc to indicate that - // the object is there. - *ty_ptr = bitpack_tydesc_ptr(tydesc, true); - - return reinterpret_cast(&ptr); - } - } - - // The external interface - #[inline(always)] - fn alloc(op: fn() -> T) -> &self/T { - if !rusti::needs_drop::() { - self.alloc_pod(op) - } else { self.alloc_nonpod(op) } - } -} -#[cfg(stage1)] -#[cfg(stage2)] impl &Arena { // Functions for the POD part of the arena fn alloc_pod_grow(n_bytes: uint, align: uint) -> *u8 { diff --git a/src/libstd/time.rs b/src/libstd/time.rs index 8fa1e0cf3f0..65872a013ab 100644 --- a/src/libstd/time.rs +++ b/src/libstd/time.rs @@ -8,24 +8,16 @@ use result::{Result, Ok, Err}; #[abi = "cdecl"] extern mod rustrt { #[legacy_exports] - #[cfg(stage0)] - fn get_time(&sec: i64, &nsec: i32); - #[cfg(stage1)] - #[cfg(stage2)] fn get_time(sec: &mut i64, nsec: &mut i32); - #[cfg(stage0)] - fn precise_time_ns(&ns: u64); - #[cfg(stage1)] - #[cfg(stage2)] fn precise_time_ns(ns: &mut u64); fn rust_tzset(); // FIXME: The i64 values can be passed by-val when #2064 is fixed. fn rust_gmtime(&&sec: i64, &&nsec: i32, &&result: Tm); fn rust_localtime(&&sec: i64, &&nsec: i32, &&result: Tm); - fn rust_timegm(&&tm: Tm, &sec: i64); - fn rust_mktime(&&tm: Tm, &sec: i64); + fn rust_timegm(&&tm: Tm, sec: &mut i64); + fn rust_mktime(&&tm: Tm, sec: &mut i64); } /// A record specifying a time value in seconds and nanoseconds. @@ -42,15 +34,6 @@ impl Timespec : Eq { * Returns the current time as a `timespec` containing the seconds and * nanoseconds since 1970-01-01T00:00:00Z. */ -#[cfg(stage0)] -pub fn get_time() -> Timespec { - let mut sec = 0i64; - let mut nsec = 0i32; - rustrt::get_time(sec, nsec); - return {sec: sec, nsec: nsec}; -} -#[cfg(stage1)] -#[cfg(stage2)] pub fn get_time() -> Timespec { let mut sec = 0i64; let mut nsec = 0i32; @@ -63,14 +46,6 @@ pub fn get_time() -> Timespec { * Returns the current value of a high-resolution performance counter * in nanoseconds since an unspecified epoch. */ -#[cfg(stage0)] -pub fn precise_time_ns() -> u64 { - let mut ns = 0u64; - rustrt::precise_time_ns(ns); - ns -} -#[cfg(stage1)] -#[cfg(stage2)] pub fn precise_time_ns() -> u64 { let mut ns = 0u64; rustrt::precise_time_ns(&mut ns); @@ -790,9 +765,9 @@ impl Tm { fn to_timespec() -> Timespec { let mut sec = 0i64; if self.tm_gmtoff == 0_i32 { - rustrt::rust_timegm(self, sec); + rustrt::rust_timegm(self, &mut sec); } else { - rustrt::rust_mktime(self, sec); + rustrt::rust_mktime(self, &mut sec); } { sec: sec, nsec: self.tm_nsec } } diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index bc0beec5b36..6bee9190a83 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -570,7 +570,8 @@ impl parser { fn parse_arg_mode() -> mode { if self.eat(token::BINOP(token::AND)) { - self.warn(~"Obsolete syntax has no effect"); + self.span_fatal(copy self.last_span, + ~"Obsolete syntax has no effect"); expl(by_mutbl_ref) } else if self.eat(token::BINOP(token::MINUS)) { expl(by_move) -- cgit 1.4.1-3-g733a5