From ca0aefa8bfbd1f1906f6aa7bba430c1765d2345f Mon Sep 17 00:00:00 2001
From: Brian Anderson <banderson@mozilla.com>
Date: Thu, 26 Jan 2012 22:45:28 -0800
Subject: [PATCH] rustdoc: Add resource arg tys to doc tree

---
 src/rustdoc/demo.rs       | 29 +++++++++++++++++++++++++++++
 src/rustdoc/tystr_pass.rs | 14 +++++++++++++-
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/src/rustdoc/demo.rs b/src/rustdoc/demo.rs
index 9daae5b5a88..f705f2b5915 100644
--- a/src/rustdoc/demo.rs
+++ b/src/rustdoc/demo.rs
@@ -70,3 +70,32 @@ mod blade_runner {
                 Alien 3 was crap though."
     )];
 }
+
+#[doc(
+    brief = "Bored",
+    desc = "
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nec
+    molestie nisl. Duis massa risus, pharetra a scelerisque a,
+    molestie eu velit. Donec mattis ligula at ante imperdiet ut
+    dapibus mauris malesuada. Sed gravida nisi a metus elementum sit
+    amet hendrerit dolor bibendum. Aenean sit amet neque massa, sed
+    tempus tortor. Sed ut lobortis enim. Proin a mauris quis nunc
+    fermentum ultrices eget a erat. Mauris in lectus vitae metus
+    sodales auctor. Morbi nunc quam, ultricies at venenatis non,
+    pellentesque ac dui.
+
+    Quisque vitae est id eros placerat laoreet sit amet eu
+    nisi. Curabitur suscipit neque porttitor est euismod
+    lacinia. Curabitur non quam vitae ipsum adipiscing
+    condimentum. Mauris ut ante eget metus sollicitudin
+    blandit. Aliquam erat volutpat. Morbi sed nisl mauris. Nulla
+    facilisi. Phasellus at mollis ipsum. Maecenas sed convallis
+    sapien. Nullam in ligula turpis. Pellentesque a neque augue. Sed
+    eget ante feugiat tortor congue auctor ac quis ante. Proin
+    condimentum lacinia tincidunt.
+
+")]
+resource bored(bored: bool) {
+    log(error, bored);
+}
\ No newline at end of file
diff --git a/src/rustdoc/tystr_pass.rs b/src/rustdoc/tystr_pass.rs
index a4a6ccde41c..12a1e68b42b 100644
--- a/src/rustdoc/tystr_pass.rs
+++ b/src/rustdoc/tystr_pass.rs
@@ -134,6 +134,9 @@ fn get_arg_tys(srv: astsrv::srv, fn_id: doc::ast_id) -> [(str, str)] {
         alt ctxt.ast_map.get(fn_id) {
           ast_map::node_item(@{
             node: ast::item_fn(decl, _, _), _
+          }) |
+          ast_map::node_item(@{
+            node: ast::item_res(decl, _, _, _, _), _
           }) {
             vec::map(decl.inputs) {|arg|
                 (arg.ident, pprust::ty_to_str(arg.ty))
@@ -231,6 +234,7 @@ fn fold_res(
     let srv = fold.ctxt;
 
     ~{
+        args: merge_arg_tys(srv, doc.id, doc.args),
         sig: some(astsrv::exec(srv) {|ctxt|
             alt ctxt.ast_map.get(doc.id) {
               ast_map::node_item(@{
@@ -250,6 +254,14 @@ fn should_add_resource_sigs() {
     let srv = astsrv::mk_srv_from_str(source);
     let doc = extract::from_srv(srv, "");
     let doc = run(srv, doc);
-    log(error, doc.topmod.resources[0].sig);
     assert doc.topmod.resources[0].sig == some("resource r(b: bool)");
 }
+
+#[test]
+fn should_add_resource_arg_tys() {
+    let source = "resource r(a: bool) { }";
+    let srv = astsrv::mk_srv_from_str(source);
+    let doc = extract::from_srv(srv, "");
+    let doc = run(srv, doc);
+    assert doc.topmod.resources[0].args[0].ty == some("bool");
+}
\ No newline at end of file