From ab86bade97470fa35b0a5f9c6ec5bc3a65d595a8 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 23 Jan 2012 23:17:13 -0800 Subject: [PATCH] rustdoc: Build const docs from AST consts --- src/rustdoc/extract.rs | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/rustdoc/extract.rs b/src/rustdoc/extract.rs index e508ac1271c..329604eb49b 100644 --- a/src/rustdoc/extract.rs +++ b/src/rustdoc/extract.rs @@ -66,7 +66,17 @@ fn moddoc_from_mod( } } }), - consts: doc::constlist([]) + consts: doc::constlist( + vec::filter_map(module.items) {|item| + alt item.node { + ast::item_const(_, _) { + some(constdoc_from_const(item.ident, item.id)) + } + _ { + none + } + } + }) } } @@ -111,6 +121,26 @@ fn argdoc_from_arg(arg: ast::arg) -> doc::argdoc { } } +fn constdoc_from_const( + name: ast::ident, + id: ast::node_id +) -> doc::constdoc { + ~{ + id: id, + name: name, + ty: none + } +} + +#[test] +fn should_extract_const_name_and_id() { + let source = "const a: int = 0;"; + let ast = parse::from_str(source); + let doc = extract(ast, ""); + assert doc.topmod.consts[0].id != 0; + assert doc.topmod.consts[0].name == "a"; +} + #[cfg(test)] mod tests {