about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-02-24 14:08:47 -0800
committerBrian Anderson <banderson@mozilla.com>2012-02-24 14:08:47 -0800
commitf053f06973afde6400528e409d6332ea2171fda2 (patch)
tree430938fd99dd41bc97289167004b66320d3c3566
parent681e5beac438c9c273b0bc434d4ccd17791c52a9 (diff)
downloadrust-f053f06973afde6400528e409d6332ea2171fda2.tar.gz
rust-f053f06973afde6400528e409d6332ea2171fda2.zip
rustdoc: Record paths to native functions
-rw-r--r--src/rustdoc/path_pass.rs20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/rustdoc/path_pass.rs b/src/rustdoc/path_pass.rs
index 66b6d10f9fa..8589e3264e0 100644
--- a/src/rustdoc/path_pass.rs
+++ b/src/rustdoc/path_pass.rs
@@ -16,7 +16,8 @@ fn run(srv: astsrv::srv, doc: doc::cratedoc) -> doc::cratedoc {
     };
     let fold = fold::fold({
         fold_item: fold_item,
-        fold_mod: fold_mod
+        fold_mod: fold_mod,
+        fold_nmod: fold_nmod
         with *fold::default_any_fold(ctxt)
     });
     fold.fold_crate(fold, doc)
@@ -42,6 +43,13 @@ fn fold_mod(fold: fold::fold<ctxt>, doc: doc::moddoc) -> doc::moddoc {
     }
 }
 
+fn fold_nmod(fold: fold::fold<ctxt>, doc: doc::nmoddoc) -> doc::nmoddoc {
+    vec::push(fold.ctxt.path, doc.name());
+    let doc = fold::default_seq_fold_nmod(fold, doc);
+    vec::pop(fold.ctxt.path);
+    ret doc;
+}
+
 #[test]
 fn should_record_mod_paths() {
     let source = "mod a { mod b { mod c { } } mod d { mod e { } } }";
@@ -61,4 +69,14 @@ fn should_record_fn_paths() {
         let doc = run(srv, doc);
         assert doc.topmod.mods()[0].fns()[0].path() == ["a"];
     }
+}
+
+#[test]
+fn should_record_native_fn_paths() {
+    let source = "native mod a { fn b(); }";
+    astsrv::from_str(source) {|srv|
+        let doc = extract::from_srv(srv, "");
+        let doc = run(srv, doc);
+        assert doc.topmod.nmods()[0].fns[0].path() == ["a"];
+    }
 }
\ No newline at end of file