diff --git a/src/rustdoc/rustdoc.rs b/src/rustdoc/rustdoc.rs index 1c55b1a38ec..8f69ba780e3 100755 --- a/src/rustdoc/rustdoc.rs +++ b/src/rustdoc/rustdoc.rs @@ -67,9 +67,16 @@ fn main(argv: [str]) { } let source_file = argv[1]; - let default_name = source_file; - let crate = parse::from_file(source_file); - let doc = extract::extract(crate, default_name); - let doc = tystr_pass::run(doc, crate); - gen::write_markdown(doc, std::io::stdout()); + run(source_file); } + +fn run(source_file: str) { + + let default_name = source_file; + let srv = astsrv::mk_seq_srv_from_file(source_file); + let doc = extract::from_srv(srv, default_name); + let doc = run_passes(srv, doc, [ + tystr_pass::run + ]); + gen::write_markdown(doc, std::io::stdout()); +} \ No newline at end of file diff --git a/src/rustdoc/tystr_pass.rs b/src/rustdoc/tystr_pass.rs index 18a9941ec47..7af075f5183 100644 --- a/src/rustdoc/tystr_pass.rs +++ b/src/rustdoc/tystr_pass.rs @@ -1,33 +1,32 @@ import rustc::syntax::ast; +import rustc::syntax::print::pprust; +import rustc::middle::ast_map; +import astsrv::seq_srv; export run; fn run( - doc: doc::cratedoc, - crate: @ast::crate + srv: astsrv::seq_srv, + doc: doc::cratedoc ) -> doc::cratedoc { let fold = fold::fold({ fold_fn: fn~( - f: fold::fold<@ast::crate>, + f: fold::fold, d: doc::fndoc ) -> doc::fndoc { fold_fn(f, d) } - with *fold::default_seq_fold(crate) + with *fold::default_seq_fold(srv) }); fold.fold_crate(fold, doc) } fn fold_fn( - fold: fold::fold<@ast::crate>, + fold: fold::fold, doc: doc::fndoc ) -> doc::fndoc { - import rustc::middle::ast_map; - import rustc::syntax::print::pprust; - let crate = fold.ctxt; - - let map = ast_map::map_crate(*crate); + let srv = fold.ctxt; fn add_ret_ty( doc: option, @@ -46,14 +45,18 @@ fn fold_fn( } } - ~{ - return: alt map.get(doc.id) { + let retty = srv.exec {|ctxt| + alt ctxt.map.get(doc.id) { ast_map::node_item(@{ node: ast::item_fn(decl, _, _), _ }) { - add_ret_ty(doc.return, pprust::ty_to_str(decl.output)) + pprust::ty_to_str(decl.output) } } + }; + + ~{ + return: add_ret_ty(doc.return, retty) with *doc } } @@ -64,9 +67,9 @@ mod tests { #[test] fn should_add_fn_ret_types() { let source = "fn a() -> int { }"; - let ast = parse::from_str(source); - let doc = extract::extract(ast, ""); - let doc = run(doc, ast); + let srv = astsrv::mk_seq_srv_from_str(source); + let doc = extract::from_srv(srv, ""); + let doc = run(srv, doc); assert option::get(doc.topmod.fns[0].return).ty == some("int"); } }