about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-01-26 22:14:16 -0800
committerBrian Anderson <banderson@mozilla.com>2012-01-26 22:14:16 -0800
commit21fc2a36d8941242e65227d1362259bc7b399bec (patch)
tree198a3f5ffa88e789e8a42d89a2e63d5b154591e8 /src
parent06ab83de2c72ebaf87b33133007a0dd0e79962db (diff)
downloadrust-21fc2a36d8941242e65227d1362259bc7b399bec.tar.gz
rust-21fc2a36d8941242e65227d1362259bc7b399bec.zip
rustdoc: Build resource arguments as well
Diffstat (limited to 'src')
-rw-r--r--src/rustdoc/attr_pass.rs16
-rw-r--r--src/rustdoc/extract.rs15
2 files changed, 23 insertions, 8 deletions
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 {