about summary refs log tree commit diff
path: root/src/libstd/rt
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2013-11-21 23:36:52 -0800
committerPatrick Walton <pcwalton@mimiga.net>2013-11-26 08:25:27 -0800
commit749ee53c6d23ae1467568d6e0280a4f59e4e952b (patch)
tree8ff17ad29a91e3b5d625db08d2d7d9e039ed484a /src/libstd/rt
parent38efa17bb8b9c1077e7b8cd9d67da08dec3f0bda (diff)
downloadrust-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.rs10
-rw-r--r--src/libstd/rt/mod.rs6
-rw-r--r--src/libstd/rt/sched.rs9
-rw-r--r--src/libstd/rt/task.rs6
-rw-r--r--src/libstd/rt/test.rs29
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);
     }
 }