about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-01-19 14:27:16 -0800
committerBrian Anderson <banderson@mozilla.com>2012-01-19 14:35:18 -0800
commitdf9bf1f45f462ecd4f5d2ab35f52b35119692ff2 (patch)
tree2833f9bc9da5c7fc19e11a8e0aca3d71897a8448
parent00afef0bd8ac2141ae0bfa675402f2aa99165789 (diff)
downloadrust-df9bf1f45f462ecd4f5d2ab35f52b35119692ff2.tar.gz
rust-df9bf1f45f462ecd4f5d2ab35f52b35119692ff2.zip
rustdoc: Attach return value descriptions to the doc tree
-rw-r--r--src/rustdoc/attr_pass.rs27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/rustdoc/attr_pass.rs b/src/rustdoc/attr_pass.rs
index ac42820bf70..9b718aa988b 100644
--- a/src/rustdoc/attr_pass.rs
+++ b/src/rustdoc/attr_pass.rs
@@ -160,10 +160,20 @@ fn fold_fn(
 
     fn merge_ret_attrs(
         doc: option<doc::retdoc>,
-        _attrs: option<str>
+        attrs: option<str>
     ) -> option<doc::retdoc> {
-        // FIXME
-        doc
+        alt doc {
+          some(doc) {
+            some({
+                desc: attrs
+                with doc
+            })
+          }
+          none {
+            // FIXME: Warning about documenting nil?
+            none
+          }
+        }
     }
 }
 
@@ -185,4 +195,15 @@ fn fold_fn_should_extract_arg_attributes() {
     let fold = fold::default_seq_fold(srv);
     let doc = fold_fn(fold, doc.topmod.fns[0]);
     assert doc.args[0].desc == some("b");
+}
+
+#[test]
+fn fold_fn_should_extract_return_attributes() {
+    let source = "#[doc(return = \"what\")] fn a() -> int { }";
+    let srv = astsrv::mk_srv_from_str(source);
+    let doc = extract::from_srv(srv, "");
+    let doc = tystr_pass::mk_pass()(srv, doc);
+    let fold = fold::default_seq_fold(srv);
+    let doc = fold_fn(fold, doc.topmod.fns[0]);
+    assert option::get(doc.return).desc == some("what");
 }
\ No newline at end of file