about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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