Make moves explicit in rustdoc

This commit is contained in:
Tim Chevalier 2012-09-18 22:43:54 -07:00
parent 90d06b80fd
commit d52f988dbb
9 changed files with 38 additions and 36 deletions

View File

@ -57,14 +57,14 @@ fn from_file<T>(file: ~str, owner: SrvOwner<T>) -> T {
fn run<T>(owner: SrvOwner<T>, source: ~str, +parse: Parser) -> T {
let srv_ = Srv({
ch: do task::spawn_listener |po| {
ch: do task::spawn_listener |move parse, po| {
act(po, source, parse);
}
});
let res = owner(srv_);
comm::send(srv_.ch, Exit);
return res;
move res
}
fn act(po: comm::Port<Msg>, source: ~str, parse: Parser) {
@ -97,7 +97,7 @@ fn exec<T:Send>(
let msg = HandleRequest(fn~(move f, ctxt: Ctxt) {
comm::send(ch, f(ctxt))
});
comm::send(srv.ch, msg);
comm::send(srv.ch, move msg);
comm::recv(po)
}

View File

@ -93,7 +93,7 @@ fn parse_item_attrs<T:Send>(
srv: astsrv::Srv,
id: doc::AstId,
+parse_attrs: fn~(~[ast::attribute]) -> T) -> T {
do astsrv::exec(srv) |ctxt| {
do astsrv::exec(srv) |move parse_attrs, ctxt| {
let attrs = match ctxt.ast_map.get(id) {
ast_map::node_item(item, _) => item.attrs,
ast_map::node_foreign_item(item, _, _) => item.attrs,

View File

@ -71,18 +71,18 @@ fn mk_fold<T:Copy>(
) -> Fold<T> {
Fold({
ctxt: ctxt,
fold_doc: fold_doc,
fold_crate: fold_crate,
fold_item: fold_item,
fold_mod: fold_mod,
fold_nmod: fold_nmod,
fold_fn: fold_fn,
fold_const: fold_const,
fold_enum: fold_enum,
fold_trait: fold_trait,
fold_impl: fold_impl,
fold_type: fold_type,
fold_struct: fold_struct,
fold_doc: move fold_doc,
fold_crate: move fold_crate,
fold_item: move fold_item,
fold_mod: move fold_mod,
fold_nmod: move fold_nmod,
fold_fn: move fold_fn,
fold_const: move fold_const,
fold_enum: move fold_enum,
fold_trait: move fold_trait,
fold_impl: move fold_impl,
fold_type: move fold_type,
fold_struct: move fold_struct
})
}

View File

@ -9,13 +9,14 @@ export mk_pass;
export header_kind, header_name, header_text;
fn mk_pass(+writer_factory: WriterFactory) -> Pass {
let f = fn~(srv: astsrv::Srv, doc: doc::Doc) -> doc::Doc {
let f = fn~(move writer_factory,
srv: astsrv::Srv, doc: doc::Doc) -> doc::Doc {
run(srv, doc, copy writer_factory)
};
{
name: ~"markdown",
f: f
f: move f
}
}
@ -44,7 +45,7 @@ fn run(
~"mods last", mods_last
).f(srv, doc);
write_markdown(sorted_doc, writer_factory);
write_markdown(sorted_doc, move writer_factory);
return doc;
}
@ -118,9 +119,9 @@ fn should_request_new_writer_for_each_page() {
let (srv, doc) = test::create_doc_srv(~"mod a { }");
// Split the document up into pages
let doc = page_pass::mk_pass(config::DocPerMod).f(srv, doc);
write_markdown(doc, writer_factory);
write_markdown(doc, move writer_factory);
// We expect two pages to have been written
for iter::repeat(2u) {
for iter::repeat(2) {
comm::recv(po);
}
}
@ -150,8 +151,8 @@ fn should_write_title_for_each_page() {
let (srv, doc) = test::create_doc_srv(
~"#[link(name = \"core\")]; mod a { }");
let doc = page_pass::mk_pass(config::DocPerMod).f(srv, doc);
write_markdown(doc, writer_factory);
for iter::repeat(2u) {
write_markdown(doc, move writer_factory);
for iter::repeat(2) {
let (page, markdown) = comm::recv(po);
match page {
doc::CratePage(_) => {
@ -845,7 +846,7 @@ mod test {
doc: doc::Doc
) -> ~str {
let (writer_factory, po) = markdown_writer::future_writer_factory();
write_markdown(doc, writer_factory);
write_markdown(doc, move writer_factory);
return comm::recv(po).second();
}
@ -854,7 +855,7 @@ mod test {
doc: doc::Doc
) -> ~str {
let (writer_factory, po) = markdown_writer::future_writer_factory();
let pass = mk_pass(writer_factory);
let pass = mk_pass(move writer_factory);
pass.f(srv, doc);
return comm::recv(po).second();
}

View File

@ -146,7 +146,8 @@ fn readclose(fd: libc::c_int) -> ~str {
}
fn generic_writer(+process: fn~(markdown: ~str)) -> Writer {
let ch = do task::spawn_listener |po: comm::Port<WriteInstr>| {
let ch = do task::spawn_listener
|move process, po: comm::Port<WriteInstr>| {
let mut markdown = ~"";
let mut keep_going = true;
while keep_going {
@ -155,7 +156,7 @@ fn generic_writer(+process: fn~(markdown: ~str)) -> Writer {
Done => keep_going = false
}
}
process(markdown);
process(move markdown);
};
fn~(+instr: WriteInstr) {
@ -274,22 +275,22 @@ fn future_writer_factory(
let writer_ch = comm::Chan(&writer_po);
do task::spawn {
let (writer, future) = future_writer();
comm::send(writer_ch, writer);
comm::send(writer_ch, move writer);
let s = future::get(&future);
comm::send(markdown_ch, (page, s));
}
comm::recv(writer_po)
};
(writer_factory, markdown_po)
(move writer_factory, markdown_po)
}
fn future_writer() -> (Writer, future::Future<~str>) {
let (chan, port) = pipes::stream();
let writer = fn~(+instr: WriteInstr) {
let writer = fn~(move chan, +instr: WriteInstr) {
chan.send(copy instr);
};
let future = do future::from_fn {
let future = do future::from_fn |move port| {
let mut res = ~"";
loop {
match port.recv() {
@ -299,5 +300,5 @@ fn future_writer() -> (Writer, future::Future<~str>) {
}
res
};
(writer, future)
(move writer, move future)
}

View File

@ -46,7 +46,7 @@ fn make_doc_from_pages(page_port: PagePort) -> doc::Doc {
loop {
let val = comm::recv(page_port);
if val.is_some() {
pages += ~[option::unwrap(val)];
pages += ~[option::unwrap(move val)];
} else {
break;
}

View File

@ -87,5 +87,5 @@ fn time<T>(what: ~str, f: fn() -> T) -> T {
let rv = f();
let end = std::time::precise_time_s();
info!("time: %3.3f s %s", end - start, what);
return rv;
move rv
}

View File

@ -10,7 +10,7 @@ type ItemLtEq = pure fn~(v1: &doc::ItemTag, v2: &doc::ItemTag) -> bool;
fn mk_pass(name: ~str, +lteq: ItemLtEq) -> Pass {
{
name: name,
f: fn~(srv: astsrv::Srv, doc: doc::Doc) -> doc::Doc {
f: fn~(move lteq, srv: astsrv::Srv, doc: doc::Doc) -> doc::Doc {
run(srv, doc, lteq)
}
}

View File

@ -7,7 +7,7 @@ export mk_pass;
fn mk_pass(name: ~str, +op: fn~(~str) -> ~str) -> Pass {
{
name: name,
f: fn~(srv: astsrv::Srv, doc: doc::Doc) -> doc::Doc {
f: fn~(move op, srv: astsrv::Srv, doc: doc::Doc) -> doc::Doc {
run(srv, doc, op)
}
}