about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-02-24 15:59:34 -0800
committerBrian Anderson <banderson@mozilla.com>2012-02-24 15:59:34 -0800
commit16d290d10c6ded6365ce7de89e6683d530f03485 (patch)
tree00e7c0b20970e70c51953fefbf9f127aa141aefc
parent396540f19d37e4d8ad87a8d9db179c6b05263aff (diff)
downloadrust-16d290d10c6ded6365ce7de89e6683d530f03485.tar.gz
rust-16d290d10c6ded6365ce7de89e6683d530f03485.zip
rustdoc: Reexport native functions
-rw-r--r--src/rustdoc/reexport_pass.rs24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/rustdoc/reexport_pass.rs b/src/rustdoc/reexport_pass.rs
index a4ac12ff58e..60ff4a7c798 100644
--- a/src/rustdoc/reexport_pass.rs
+++ b/src/rustdoc/reexport_pass.rs
@@ -104,7 +104,8 @@ fn build_reexport_def_map(
 
     // FIXME: Do a parallel fold
     let fold = fold::fold({
-        fold_mod: fold_mod
+        fold_mod: fold_mod,
+        fold_nmod: fold_nmod
         with *fold::default_seq_fold(ctxt)
     });
 
@@ -124,6 +125,19 @@ fn build_reexport_def_map(
 
         ret doc;
     }
+
+    fn fold_nmod(fold: fold::fold<ctxt>, doc: doc::nmoddoc) -> doc::nmoddoc {
+        let doc = fold::default_seq_fold_nmod(fold, doc);
+
+        for fndoc in doc.fns {
+            let def_id = ast_util::local_def(fndoc.id());
+            if fold.ctxt.def_set.contains_key(def_id) {
+                fold.ctxt.def_map.insert(def_id, doc::fntag(fndoc));
+            }
+        }
+
+        ret doc;
+    }
 }
 
 fn build_reexport_path_map(srv: astsrv::srv, -def_map: def_map) -> path_map {
@@ -299,6 +313,14 @@ fn should_mark_reepxorts_as_such() {
 }
 
 #[test]
+fn should_duplicate_reexported_native_fns() {
+    let source = "native mod a { fn b(); } \
+                  mod c { import a::b; export b; }";
+    let doc = test::mk_doc(source);
+    assert doc.topmod.mods()[0].fns()[0].name() == "b";
+}
+
+#[test]
 fn should_duplicate_multiple_reexported_items() {
     let source = "mod a { \
                   export b; export c; \