about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/rustdoc/prune_undoc_pass.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/rustdoc/prune_undoc_pass.rs b/src/rustdoc/prune_undoc_pass.rs
index 921b0c8a433..029738da8db 100644
--- a/src/rustdoc/prune_undoc_pass.rs
+++ b/src/rustdoc/prune_undoc_pass.rs
@@ -44,9 +44,11 @@ fn fold_fn(
     fold: fold::fold<ctxt>,
     doc: doc::fndoc
 ) -> doc::fndoc {
+    let have_arg_docs = false;
     let doc = ~{
         args: vec::filter_map(doc.args) {|doc|
             if option::is_some(doc.desc) {
+                have_arg_docs = true;
                 some(doc)
             } else {
                 none
@@ -58,6 +60,7 @@ fn fold_fn(
     fold.ctxt.have_docs =
         doc.brief != none
         || doc.desc != none
+        || have_arg_docs
         || doc.return.desc != none;
     ret doc;
 }
@@ -72,6 +75,16 @@ fn should_elide_undocumented_arguments() {
     assert vec::is_empty(doc.topmod.fns[0].args);
 }
 
+#[test]
+fn should_not_elide_fns_with_documented_arguments() {
+    let source = "#[doc(args(a = \"b\"))] fn a(a: int) { }";
+    let srv = astsrv::mk_srv_from_str(source);
+    let doc = extract::from_srv(srv, "");
+    let doc = attr_pass::mk_pass()(srv, doc);
+    let doc = run(srv, doc);
+    assert vec::is_not_empty(*doc.topmod.fns);
+}
+
 fn fold_modlist(
     fold: fold::fold<ctxt>,
     list: doc::modlist