about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorJeff Olson <olson.jeffery@gmail.com>2012-08-28 06:43:58 -0700
committerBrian Anderson <banderson@mozilla.com>2012-09-08 14:22:15 -0700
commit27129c6aba153299100887de5c8643cbe3e9b8ef (patch)
tree839ba16a4951b31b64d85989425a1fcd69002ff3 /src/libcore
parent6bdda1e0de6097c1647ac49da8b24e86dd5299b8 (diff)
core/std: finish making futures sendable + test.. still issues
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/future.rs16
-rw-r--r--src/libcore/task.rs2
2 files changed, 14 insertions, 4 deletions
diff --git a/src/libcore/future.rs b/src/libcore/future.rs
index 141fafcf7d7..82deaf89537 100644
--- a/src/libcore/future.rs
+++ b/src/libcore/future.rs
@@ -37,7 +37,7 @@ struct Future<A> {
 }
 
 priv enum FutureState<A> {
-    Pending(fn@() -> A),
+    Pending(fn~() -> A),
     Evaluating,
     Forced(A)
 }
@@ -93,7 +93,7 @@ fn from_port<A:Send>(+port: future_pipe::client::waiting<A>) -> Future<A> {
     }
 }
 
-fn from_fn<A>(+f: @fn() -> A) -> Future<A> {
+fn from_fn<A>(+f: ~fn() -> A) -> Future<A> {
     /*!
      * Create a future from a function.
      *
@@ -239,4 +239,14 @@ mod test {
         let f = spawn(|| fail);
         let _x: ~str = get(&f);
     }
-}
\ No newline at end of file
+
+    #[test]
+    fn test_sendable_future() {
+        let expected = ~"schlorf";
+        let f = do spawn |copy expected| { expected };
+        do task::spawn {
+            let actual = get(&f);
+            assert actual == expected;
+        }
+    }
+}
diff --git a/src/libcore/task.rs b/src/libcore/task.rs
index cecc7a51ea7..3b1f9d8f845 100644
--- a/src/libcore/task.rs
+++ b/src/libcore/task.rs
@@ -1754,7 +1754,7 @@ fn test_spawn_linked_sup_fail_down() { // parent fails; child fails
         opts.supervised = true;
         move opts
     };
-    
+
     let b0 = task();
     let b1 = TaskBuilder({
         opts: move opts,