about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-01-30 19:24:06 -0800
committerBrian Anderson <banderson@mozilla.com>2012-01-30 19:37:32 -0800
commitfd7bb70d6f8a08cbc1d6f2f37dc7781840e9a881 (patch)
treef10f7791e0ce6bd37c662fc18951f69e357d2d86
parenta64030697b0ac7852b952248e9bad46bad10c1a9 (diff)
downloadrust-fd7bb70d6f8a08cbc1d6f2f37dc7781840e9a881.tar.gz
rust-fd7bb70d6f8a08cbc1d6f2f37dc7781840e9a881.zip
rustdoc: Promote iface descriptions to brief descriptions
-rw-r--r--src/rustdoc/desc_to_brief_pass.rs45
1 files changed, 44 insertions, 1 deletions
diff --git a/src/rustdoc/desc_to_brief_pass.rs b/src/rustdoc/desc_to_brief_pass.rs
index 21d52736c96..2ab9a86db4a 100644
--- a/src/rustdoc/desc_to_brief_pass.rs
+++ b/src/rustdoc/desc_to_brief_pass.rs
@@ -22,7 +22,8 @@ fn run(
         fold_const: fold_const,
         fold_fn: fold_fn,
         fold_enum: fold_enum,
-        fold_res: fold_res
+        fold_res: fold_res,
+        fold_iface: fold_iface
         with *fold::default_seq_fold(())
     });
     fold.fold_crate(fold, doc)
@@ -83,6 +84,26 @@ fn fold_res(fold: fold::fold<()>, doc: doc::resdoc) -> doc::resdoc {
     }
 }
 
+fn fold_iface(fold: fold::fold<()>, doc: doc::ifacedoc) -> doc::ifacedoc {
+    let doc =fold::default_seq_fold_iface(fold, doc);
+    let (brief, desc) = modify(doc.brief, doc.desc);
+
+    {
+        brief: brief,
+        desc: desc,
+        methods: vec::map(doc.methods) {|doc|
+            let (brief, desc) = modify(doc.brief, doc.desc);
+
+            {
+                brief: brief,
+                desc: desc
+                with doc
+            }
+        }
+        with doc
+    }
+}
+
 #[test]
 fn should_promote_mod_desc() {
     let source = "#[doc(desc = \"desc\")] mod m { }";
@@ -138,6 +159,28 @@ fn should_promote_resource_desc() {
     assert doc.topmod.resources()[0].desc == none;
 }
 
+#[test]
+fn should_promote_iface_desc() {
+    let source = "#[doc(desc = \"desc\")] iface i { fn a(); }";
+    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 doc.topmod.ifaces()[0].brief == some("desc");
+    assert doc.topmod.ifaces()[0].desc == none;
+}
+
+#[test]
+fn should_promote_iface_method_desc() {
+    let source = "iface i { #[doc(desc = \"desc\")] fn a(); }";
+    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 doc.topmod.ifaces()[0].methods[0].brief == some("desc");
+    assert doc.topmod.ifaces()[0].methods[0].desc == none;
+}
+
 fn modify(
     brief: option<str>,
     desc: option<str>