diff --git a/src/libcore/future.rs b/src/libcore/future.rs index 141fafcf7d7a..82deaf895376 100644 --- a/src/libcore/future.rs +++ b/src/libcore/future.rs @@ -37,7 +37,7 @@ struct Future { } priv enum FutureState { - Pending(fn@() -> A), + Pending(fn~() -> A), Evaluating, Forced(A) } @@ -93,7 +93,7 @@ fn from_port(+port: future_pipe::client::waiting) -> Future { } } -fn from_fn(+f: @fn() -> A) -> Future { +fn from_fn(+f: ~fn() -> A) -> Future { /*! * 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 cecc7a51ea78..3b1f9d8f845b 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, diff --git a/src/rustdoc/markdown_writer.rs b/src/rustdoc/markdown_writer.rs index c9d7fe0adb79..00c80366084a 100644 --- a/src/rustdoc/markdown_writer.rs +++ b/src/rustdoc/markdown_writer.rs @@ -285,15 +285,14 @@ fn future_writer_factory( } fn future_writer() -> (writer, future::Future<~str>) { - let port = comm::Port(); - let chan = comm::Chan(port); + let (chan, port) = pipes::stream(); let writer = fn~(+instr: writeinstr) { - comm::send(chan, copy instr); + chan.send(copy instr); }; let future = do future::from_fn { let mut res = ~""; loop { - match comm::recv(port) { + match port.recv() { write(s) => res += s, done => break }