diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2013-11-21 23:36:52 -0800 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2013-11-26 08:25:27 -0800 |
| commit | 749ee53c6d23ae1467568d6e0280a4f59e4e952b (patch) | |
| tree | 8ff17ad29a91e3b5d625db08d2d7d9e039ed484a /src/libstd/rt | |
| parent | 38efa17bb8b9c1077e7b8cd9d67da08dec3f0bda (diff) | |
| download | rust-749ee53c6d23ae1467568d6e0280a4f59e4e952b.tar.gz rust-749ee53c6d23ae1467568d6e0280a4f59e4e952b.zip | |
librustc: Make `||` lambdas not infer to `proc`s
Diffstat (limited to 'src/libstd/rt')
| -rw-r--r-- | src/libstd/rt/local.rs | 10 | ||||
| -rw-r--r-- | src/libstd/rt/mod.rs | 6 | ||||
| -rw-r--r-- | src/libstd/rt/sched.rs | 9 | ||||
| -rw-r--r-- | src/libstd/rt/task.rs | 6 | ||||
| -rw-r--r-- | src/libstd/rt/test.rs | 29 |
5 files changed, 34 insertions, 26 deletions
diff --git a/src/libstd/rt/local.rs b/src/libstd/rt/local.rs index d5b0e384ca2..3e4072e617a 100644 --- a/src/libstd/rt/local.rs +++ b/src/libstd/rt/local.rs @@ -134,7 +134,7 @@ mod test { do run_in_bare_thread { local_ptr::init_tls_key(); let mut sched = ~new_test_uv_sched(); - let task = ~Task::new_root(&mut sched.stack_pool, None, || {}); + let task = ~Task::new_root(&mut sched.stack_pool, None, proc(){}); Local::put(task); let task: ~Task = Local::take(); cleanup_task(task); @@ -146,11 +146,11 @@ mod test { do run_in_bare_thread { local_ptr::init_tls_key(); let mut sched = ~new_test_uv_sched(); - let task = ~Task::new_root(&mut sched.stack_pool, None, || {}); + let task = ~Task::new_root(&mut sched.stack_pool, None, proc(){}); Local::put(task); let task: ~Task = Local::take(); cleanup_task(task); - let task = ~Task::new_root(&mut sched.stack_pool, None, || {}); + let task = ~Task::new_root(&mut sched.stack_pool, None, proc(){}); Local::put(task); let task: ~Task = Local::take(); cleanup_task(task); @@ -163,7 +163,7 @@ mod test { do run_in_bare_thread { local_ptr::init_tls_key(); let mut sched = ~new_test_uv_sched(); - let task = ~Task::new_root(&mut sched.stack_pool, None, || {}); + let task = ~Task::new_root(&mut sched.stack_pool, None, proc(){}); Local::put(task); unsafe { @@ -179,7 +179,7 @@ mod test { do run_in_bare_thread { local_ptr::init_tls_key(); let mut sched = ~new_test_uv_sched(); - let task = ~Task::new_root(&mut sched.stack_pool, None, || {}); + let task = ~Task::new_root(&mut sched.stack_pool, None, proc(){}); Local::put(task); let res = Local::borrow(|_task: &mut Task| { diff --git a/src/libstd/rt/mod.rs b/src/libstd/rt/mod.rs index ad5c69e9a0c..a8b510cbed7 100644 --- a/src/libstd/rt/mod.rs +++ b/src/libstd/rt/mod.rs @@ -340,14 +340,14 @@ fn run_(main: proc(), use_main_sched: bool) -> int { // When the main task exits, after all the tasks in the main // task tree, shut down the schedulers and set the exit code. - let handles = Cell::new(handles); - let on_exit: proc(UnwindResult) = |exit_success| { + let handles = handles; + let on_exit: proc(UnwindResult) = proc(exit_success) { unsafe { assert!(!(*exited_already.get()).swap(true, SeqCst), "the runtime already exited"); } - let mut handles = handles.take(); + let mut handles = handles; for handle in handles.mut_iter() { handle.send(Shutdown); } diff --git a/src/libstd/rt/sched.rs b/src/libstd/rt/sched.rs index ccc786242e6..9a48fc51329 100644 --- a/src/libstd/rt/sched.rs +++ b/src/libstd/rt/sched.rs @@ -979,7 +979,7 @@ mod test { assert!(Task::on_appropriate_sched()); }; - let on_exit: proc(UnwindResult) = |exit_status| { + let on_exit: proc(UnwindResult) = proc(exit_status) { rtassert!(exit_status.is_success()) }; task.death.on_exit = Some(on_exit); @@ -1193,12 +1193,15 @@ mod test { let thread = do Thread::start { let mut sched = sched.take(); - let bootstrap_task = ~Task::new_root(&mut sched.stack_pool, None, ||()); + let bootstrap_task = + ~Task::new_root(&mut sched.stack_pool, + None, + proc()()); sched.bootstrap(bootstrap_task); }; let mut stack_pool = StackPool::new(); - let task = ~Task::new_root(&mut stack_pool, None, ||()); + let task = ~Task::new_root(&mut stack_pool, None, proc()()); handle.send(TaskFromFriend(task)); handle.send(Shutdown); diff --git a/src/libstd/rt/task.rs b/src/libstd/rt/task.rs index 569d96ae388..68164eb9345 100644 --- a/src/libstd/rt/task.rs +++ b/src/libstd/rt/task.rs @@ -425,7 +425,7 @@ impl Coroutine { fn build_start_wrapper(start: proc()) -> proc() { let start_cell = Cell::new(start); - let wrapper: proc() = || { + let wrapper: proc() = proc() { // First code after swap to this new context. Run our // cleanup job. unsafe { @@ -712,10 +712,10 @@ mod test { #[test] fn unwind() { do run_in_newsched_task() { - let result = spawntask_try(||()); + let result = spawntask_try(proc()()); rtdebug!("trying first assert"); assert!(result.is_ok()); - let result = spawntask_try(|| fail!()); + let result = spawntask_try(proc() fail!()); rtdebug!("trying second assert"); assert!(result.is_err()); } diff --git a/src/libstd/rt/test.rs b/src/libstd/rt/test.rs index d87eb56a650..867d997e98d 100644 --- a/src/libstd/rt/test.rs +++ b/src/libstd/rt/test.rs @@ -83,10 +83,11 @@ pub fn run_in_uv_task_core(f: proc()) { use rt::sched::Shutdown; let mut sched = ~new_test_uv_sched(); - let exit_handle = Cell::new(sched.make_handle()); + let exit_handle = sched.make_handle(); - let on_exit: proc(UnwindResult) = |exit_status| { - exit_handle.take().send(Shutdown); + let on_exit: proc(UnwindResult) = proc(exit_status: UnwindResult) { + let mut exit_handle = exit_handle; + exit_handle.send(Shutdown); rtassert!(exit_status.is_success()); }; let mut task = ~Task::new_root(&mut sched.stack_pool, None, f); @@ -99,10 +100,11 @@ pub fn run_in_newsched_task_core(f: proc()) { use rt::sched::Shutdown; let mut sched = ~new_test_sched(); - let exit_handle = Cell::new(sched.make_handle()); + let exit_handle = sched.make_handle(); - let on_exit: proc(UnwindResult) = |exit_status| { - exit_handle.take().send(Shutdown); + let on_exit: proc(UnwindResult) = proc(exit_status: UnwindResult) { + let mut exit_handle = exit_handle; + exit_handle.send(Shutdown); rtassert!(exit_status.is_success()); }; let mut task = ~Task::new_root(&mut sched.stack_pool, None, f); @@ -244,10 +246,10 @@ pub fn run_in_mt_newsched_task(f: proc()) { scheds.push(sched); } - let handles = Cell::new(handles); - let on_exit: proc(UnwindResult) = |exit_status| { - let mut handles = handles.take(); + let handles = handles; // Work around not being able to capture mut + let on_exit: proc(UnwindResult) = proc(exit_status: UnwindResult) { // Tell schedulers to exit + let mut handles = handles; for handle in handles.mut_iter() { handle.send(Shutdown); } @@ -319,8 +321,9 @@ pub fn spawntask_random(f: proc()) { pub fn spawntask_try(f: proc()) -> Result<(),()> { let (port, chan) = oneshot(); - let chan = Cell::new(chan); - let on_exit: proc(UnwindResult) = |exit_status| chan.take().send(exit_status); + let on_exit: proc(UnwindResult) = proc(exit_status) { + chan.send(exit_status) + }; let mut new_task = Task::build_root(None, f); new_task.death.on_exit = Some(on_exit); @@ -348,7 +351,9 @@ pub fn spawntask_thread(f: proc()) -> Thread { pub fn with_test_task(blk: proc(~Task) -> ~Task) { do run_in_bare_thread { let mut sched = ~new_test_sched(); - let task = blk(~Task::new_root(&mut sched.stack_pool, None, ||{})); + let task = blk(~Task::new_root(&mut sched.stack_pool, + None, + proc() {})); cleanup_task(task); } } |
