diff --git a/src/rustdoc/doc.rs b/src/rustdoc/doc.rs index fc6872221718cc9de7e0d71c844d6ed5ae9e5ea7..0a54aea21f11a527bd2fec82913f61f18988e367 100644 --- a/src/rustdoc/doc.rs +++ b/src/rustdoc/doc.rs @@ -16,7 +16,7 @@ fns: fnlist, consts: constlist, enums: enumlist, - resources: resourcelist + resources: reslist }; type constdoc = ~{ @@ -63,7 +63,7 @@ sig: option }; -type resourcedoc = ~{ +type resdoc = ~{ id: ast_id, name: str, brief: option, @@ -77,4 +77,4 @@ enum constlist = [constdoc]; enum fnlist = [fndoc]; enum enumlist = [enumdoc]; -enum resourcelist = [resourcedoc]; +enum reslist = [resdoc]; diff --git a/src/rustdoc/extract.rs b/src/rustdoc/extract.rs index fd383e074e8a6a73577104bd5d8d1bdbbb617819..f6d4d477fbb4d703fd5dd42285aceea05dab971b 100644 --- a/src/rustdoc/extract.rs +++ b/src/rustdoc/extract.rs @@ -88,7 +88,17 @@ fn moddoc_from_mod( } } }), - resources: doc::resourcelist([]) + resources: doc::reslist( + vec::filter_map(module.items) {|item| + alt item.node { + ast::item_res(_, _, _, _, _) { + some(resdoc_from_resource(item.ident, item.id)) + } + _ { + none + } + } + }) } } @@ -201,6 +211,29 @@ fn should_extract_enum_variants() { assert doc.topmod.enums[0].variants[0].name == "v"; } +fn resdoc_from_resource( + name: str, + id: ast::node_id +) -> doc::resdoc { + ~{ + id: id, + name: name, + brief: none, + desc: none, + args: [], + sig: none + } +} + +#[test] +fn should_extract_resources() { + let source = "resource r(b: bool) { }"; + let ast = parse::from_str(source); + let doc = extract(ast, ""); + assert doc.topmod.resources[0].id != 0; + assert doc.topmod.resources[0].name == "r"; +} + #[cfg(test)] mod tests { diff --git a/src/rustdoc/rustdoc.rs b/src/rustdoc/rustdoc.rs index 68d5f5412b4bde1a8bf34fc0743dd6ffb0792539..6c9d05260b327136f6a34ce190d3d695284b5b48 100755 --- a/src/rustdoc/rustdoc.rs +++ b/src/rustdoc/rustdoc.rs @@ -53,7 +53,7 @@ fn pass1( fns: doc::fnlist([]), consts: doc::constlist([]), enums: doc::enumlist([]), - resources: doc::resourcelist([]) + resources: doc::reslist([]) } } } @@ -72,7 +72,7 @@ fn pass2( fns: doc::fnlist([]), consts: doc::constlist([]), enums: doc::enumlist([]), - resources: doc::resourcelist([]) + resources: doc::reslist([]) } } }