summary refs log tree commit diff
path: root/src/libcore/task.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcore/task.rs')
-rw-r--r--src/libcore/task.rs23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/libcore/task.rs b/src/libcore/task.rs
index 230e9173dcb..62398a6b8c9 100644
--- a/src/libcore/task.rs
+++ b/src/libcore/task.rs
@@ -1,3 +1,7 @@
+// NB: transitionary, de-mode-ing.
+#[forbid(deprecated_mode)];
+#[forbid(deprecated_pattern)];
+
 /*!
  * Task management.
  *
@@ -730,8 +734,8 @@ type taskgroup_arc = unsafe::Exclusive<option<taskgroup_data>>;
 type taskgroup_inner = &mut option<taskgroup_data>;
 
 // A taskgroup is 'dead' when nothing can cause it to fail; only members can.
-fn taskgroup_is_dead(tg: taskgroup_data) -> bool {
-    (&mut tg.members).is_empty()
+pure fn taskgroup_is_dead(tg: &taskgroup_data) -> bool {
+    (&tg.members).is_empty()
 }
 
 // A list-like structure by which taskgroups keep track of all ancestor groups
@@ -841,8 +845,11 @@ fn each_ancestor(list:        &mut ancestor_list,
                     do with_parent_tg(&mut nobe.parent_group) |tg_opt| {
                         // Decide whether this group is dead. Note that the
                         // group being *dead* is disjoint from it *failing*.
-                        do tg_opt.iter |tg| {
-                            nobe_is_dead = taskgroup_is_dead(tg);
+                        match *tg_opt {
+                            some(ref tg) => {
+                                nobe_is_dead = taskgroup_is_dead(tg);
+                            },
+                            none => { }
                         }
                         // Call iterator block. (If the group is dead, it's
                         // safe to skip it. This will leave our *rust_task
@@ -1100,7 +1107,7 @@ fn gen_child_taskgroup(linked: bool, supervised: bool)
     }
 }
 
-fn spawn_raw(opts: task_opts, +f: fn~()) {
+fn spawn_raw(+opts: task_opts, +f: fn~()) {
     let (child_tg, ancestors, is_main) =
         gen_child_taskgroup(opts.linked, opts.supervised);
 
@@ -1138,10 +1145,10 @@ fn spawn_raw(opts: task_opts, +f: fn~()) {
     // (3a) If any of those fails, it leaves all groups, and does nothing.
     // (3b) Otherwise it builds a task control structure and puts it in TLS,
     // (4) ...and runs the provided body function.
-    fn make_child_wrapper(child: *rust_task, -child_arc: taskgroup_arc,
-                          -ancestors: ancestor_list, is_main: bool,
+    fn make_child_wrapper(child: *rust_task, +child_arc: taskgroup_arc,
+                          +ancestors: ancestor_list, is_main: bool,
                           notify_chan: option<comm::chan<notification>>,
-                          -f: fn~()) -> fn~() {
+                          +f: fn~()) -> fn~() {
         let child_data = ~mut some((child_arc, ancestors));
         return fn~() {
             // Agh. Get move-mode items into the closure. FIXME (#2829)