diff --git a/src/rustdoc/attr_pass.rs b/src/rustdoc/attr_pass.rs index c1bbe68b7dd..9ee4f8ec78c 100644 --- a/src/rustdoc/attr_pass.rs +++ b/src/rustdoc/attr_pass.rs @@ -320,11 +320,17 @@ fn fold_res( ~{ brief: attrs.brief, desc: attrs.desc, - args: vec::map(attrs.args) {|attrs| - ~{ - name: attrs.name, - desc: some(attrs.desc), - ty: none + args: vec::map(doc.args) {|doc| + alt vec::find(attrs.args) {|attr| + attr.name == doc.name + } { + some(attr) { + ~{ + desc: some(attr.desc) + with *doc + } + } + none { doc } } } with *doc diff --git a/src/rustdoc/extract.rs b/src/rustdoc/extract.rs index f6d4d477fbb..f5d2f613aa7 100644 --- a/src/rustdoc/extract.rs +++ b/src/rustdoc/extract.rs @@ -91,8 +91,8 @@ fn moddoc_from_mod( resources: doc::reslist( vec::filter_map(module.items) {|item| alt item.node { - ast::item_res(_, _, _, _, _) { - some(resdoc_from_resource(item.ident, item.id)) + ast::item_res(decl, _, _, _, _) { + some(resdoc_from_resource(decl, item.ident, item.id)) } _ { none @@ -212,6 +212,7 @@ fn should_extract_enum_variants() { } fn resdoc_from_resource( + decl: ast::fn_decl, name: str, id: ast::node_id ) -> doc::resdoc { @@ -220,7 +221,7 @@ fn resdoc_from_resource( name: name, brief: none, desc: none, - args: [], + args: argdocs_from_args(decl.inputs), sig: none } } @@ -234,6 +235,14 @@ fn should_extract_resources() { assert doc.topmod.resources[0].name == "r"; } +#[test] +fn should_extract_resource_args() { + let source = "resource r(b: bool) { }"; + let ast = parse::from_str(source); + let doc = extract(ast, ""); + assert doc.topmod.resources[0].args[0].name == "b"; +} + #[cfg(test)] mod tests {