about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-01-18 14:30:48 -0800
committerBrian Anderson <banderson@mozilla.com>2012-01-18 15:02:43 -0800
commit92f63b90f9f79c2162a22cf3f46e8d3ef61b20b0 (patch)
tree40a26a447e1e2c3a1d67df988880f8c17d40d4e3
parent60b475ea88af637f197c1c710c964846346fa85b (diff)
rustdoc: Merge the crate's name attribute into the doc tree
-rw-r--r--src/rustdoc/attr_pass.rs38
-rw-r--r--src/rustdoc/fold.rs1
2 files changed, 39 insertions, 0 deletions
diff --git a/src/rustdoc/attr_pass.rs b/src/rustdoc/attr_pass.rs
index c333dc2e365..2daa77fac57 100644
--- a/src/rustdoc/attr_pass.rs
+++ b/src/rustdoc/attr_pass.rs
@@ -20,6 +20,12 @@ fn run(
     doc: doc::cratedoc
 ) -> doc::cratedoc {
     let fold = fold::fold({
+        fold_crate: fn~(
+            f: fold::fold<astsrv::srv>,
+            d: doc::cratedoc
+        ) -> doc::cratedoc {
+            fold_crate(f, d)
+        },
         fold_fn: fn~(
             f: fold::fold<astsrv::srv>,
             d: doc::fndoc
@@ -31,6 +37,38 @@ fn run(
     fold.fold_crate(fold, doc)
 }
 
+fn fold_crate(
+    fold: fold::fold<astsrv::srv>,
+    doc: doc::cratedoc
+) -> doc::cratedoc {
+
+    let srv = fold.ctxt;
+    let doc = fold::default_seq_fold_crate(fold, doc);
+
+    let attrs = astsrv::exec(srv) {|ctxt|
+        let attrs = ctxt.ast.node.attrs;
+        attr_parser::parse_crate(attrs)
+    };
+
+    ~{
+        topmod: ~{
+            name: option::from_maybe(doc.topmod.name, attrs.name),
+            mods: doc.topmod.mods,
+            fns: doc.topmod.fns
+        }
+    }
+}
+
+#[test]
+fn should_replace_top_module_name_with_crate_name() {
+    let source = "#[link(name = \"bond\")];";
+    let srv = astsrv::mk_srv_from_str(source);
+    let doc = extract::from_srv(srv, "");
+    let fold = fold::default_seq_fold(srv);
+    let doc = fold_crate(fold, doc);
+    assert doc.topmod.name == "bond";
+}
+
 fn fold_fn(
     fold: fold::fold<astsrv::srv>,
     doc: doc::fndoc
diff --git a/src/rustdoc/fold.rs b/src/rustdoc/fold.rs
index 085d24c9b29..58b0724b29d 100644
--- a/src/rustdoc/fold.rs
+++ b/src/rustdoc/fold.rs
@@ -1,6 +1,7 @@
 export fold;
 export fold_crate, fold_mod, fold_fn, fold_modlist, fold_fnlist;
 export default_seq_fold;
+export default_seq_fold_crate;
 export default_seq_fold_fn;
 export default_seq_fold_fnlist;