diff --git a/src/rustdoc/gen.rs b/src/rustdoc/gen.rs index 81945969e169..b1f511e1f6a3 100644 --- a/src/rustdoc/gen.rs +++ b/src/rustdoc/gen.rs @@ -1,74 +1,56 @@ import std::io; import std::io::writer_util; -import rustc::syntax::ast; -import rustc::syntax::print::pprust; export write_markdown; type ctxt = { - ps: pprust::ps, w: io::writer }; fn write_markdown( doc: doc::cratedoc, - crate: @ast::crate, writer: io::writer ) { let ctxt = { - ps: pprust::rust_printer(writer), w: writer }; write_header(ctxt, doc.topmod.name); - write_top_module(ctxt, crate, doc.topmod); + write_top_module(ctxt, doc.topmod); } fn write_top_module( ctxt: ctxt, - crate: @ast::crate, moddoc: doc::moddoc ) { - write_mod_contents(ctxt, crate, moddoc); + write_mod_contents(ctxt, moddoc); } fn write_mod( ctxt: ctxt, - crate: @ast::crate, moddoc: doc::moddoc ) { - write_mod_contents(ctxt, crate, moddoc); + write_mod_contents(ctxt, moddoc); } fn write_mod_contents( ctxt: ctxt, - crate: @ast::crate, moddoc: doc::moddoc ) { for fndoc in *moddoc.fns { - write_fn(ctxt, crate, fndoc); + write_fn(ctxt, fndoc); } for moddoc in *moddoc.mods { - write_mod(ctxt, crate, moddoc); + write_mod(ctxt, moddoc); } } fn write_fn( ctxt: ctxt, - crate: @ast::crate, fndoc: doc::fndoc ) { - import rustc::middle::ast_map; - - let map = ast_map::map_crate(*crate); - let decl = alt map.get(fndoc.id) { - ast_map::node_item(@{ - node: ast::item_fn(decl, _, _), _ - }) { decl } - }; - - write_fndoc(ctxt, fndoc.name, fndoc, decl); + write_fndoc(ctxt, fndoc.name, fndoc); } #[doc( @@ -87,7 +69,7 @@ fn write_header(ctxt: ctxt, name: str) { doc = "Function docs extracted from attributes", _fn = "AST object representing this function") )] -fn write_fndoc(ctxt: ctxt, ident: str, doc: doc::fndoc, decl: ast::fn_decl) { +fn write_fndoc(ctxt: ctxt, ident: str, doc: doc::fndoc) { ctxt.w.write_line("## Function `" + ident + "`"); ctxt.w.write_line(doc.brief); alt doc.desc { @@ -102,22 +84,33 @@ fn write_fndoc(ctxt: ctxt, ident: str, doc: doc::fndoc, decl: ast::fn_decl) { ctxt.w.write_str("### Argument `" + arg + "`: "); ctxt.w.write_str(desc) } - ctxt.w.write_line("### Returns `" + pprust::ty_to_str(decl.output) + "`"); alt doc.return { - some({desc: some(d), _}) { ctxt.w.write_line(d); } - _ { } + some(doc) { + alt doc.ty { + some(ty) { + ctxt.w.write_line("### Returns `" + ty + "`"); + alt doc.desc { + some(d) { + ctxt.w.write_line(d); + } + none. { } + } + } + none. { fail "unimplemented"; } + } + } + none. { } } } #[cfg(test)] mod tests { fn write_markdown_str( - doc: doc::cratedoc, - crate: @ast::crate + doc: doc::cratedoc ) -> str { let buffer = io::mk_mem_buffer(); let writer = io::mem_buffer_writer(buffer); - write_markdown(doc, crate, writer); + write_markdown(doc, writer); ret io::mem_buffer_str(buffer); } @@ -126,7 +119,7 @@ mod tests { let source = ""; let ast = parse::from_str(source); let doc = extract::extract(ast, "belch"); - let markdown = write_markdown_str(doc, ast); + let markdown = write_markdown_str(doc); assert str::contains(markdown, "# Crate belch\n"); } @@ -135,7 +128,7 @@ mod tests { let source = "fn func() { }"; let ast = parse::from_str(source); let doc = extract::extract(ast, ""); - let markdown = write_markdown_str(doc, ast); + let markdown = write_markdown_str(doc); assert str::contains(markdown, "## Function `func`"); } } \ No newline at end of file diff --git a/src/rustdoc/rustdoc.rs b/src/rustdoc/rustdoc.rs index fb1c105547be..956c2d1319a3 100755 --- a/src/rustdoc/rustdoc.rs +++ b/src/rustdoc/rustdoc.rs @@ -23,5 +23,6 @@ fn main(argv: [str]) { let default_name = source_file; let crate = parse::from_file(source_file); let doc = extract::extract(crate, default_name); - gen::write_markdown(doc, crate, std::io::stdout()); + let doc = tystr_pass::run(doc, crate); + gen::write_markdown(doc, std::io::stdout()); }