]> git.lizzy.rs Git - rust.git/commitdiff
rustdoc: Assign AST ids to mod docs
authorBrian Anderson <banderson@mozilla.com>
Thu, 19 Jan 2012 02:35:55 +0000 (18:35 -0800)
committerBrian Anderson <banderson@mozilla.com>
Thu, 19 Jan 2012 03:59:24 +0000 (19:59 -0800)
src/rustdoc/doc.rs
src/rustdoc/extract.rs
src/rustdoc/parse.rs
src/rustdoc/rustdoc.rs

index c601cbfe36551bca250bf3036210f1ddfd9a714e..a479e5f3dd7209ccb7392f19f4d2a80e5f99fb42 100644 (file)
@@ -7,6 +7,7 @@
 };
 
 type moddoc = ~{
+    id: ast_id,
     name: str,
     brief: option<str>,
     desc: option<str>,
index 3411432ce22626922b82a7f551847f8fe7a89337..eacb982252f9ae2dbbd107b0e6e7d2cea45cb7e9 100644 (file)
@@ -29,14 +29,16 @@ fn top_moddoc_from_crate(
     crate: @ast::crate,
     default_name: str
 ) -> doc::moddoc {
-    moddoc_from_mod(crate.node.module, default_name)
+    moddoc_from_mod(crate.node.module, default_name, ast::crate_node_id)
 }
 
 fn moddoc_from_mod(
     module: ast::_mod,
-    name: ast::ident
+    name: ast::ident,
+    id: ast::node_id
 ) -> doc::moddoc {
     ~{
+        id: id,
         name: name,
         brief: none,
         desc: none,
@@ -44,7 +46,7 @@ fn moddoc_from_mod(
             vec::filter_map(module.items) {|item|
                 alt item.node {
                   ast::item_mod(m) {
-                    some(moddoc_from_mod(m, item.ident))
+                    some(moddoc_from_mod(m, item.ident, item.id))
                   }
                   _ {
                     none
@@ -133,6 +135,14 @@ fn extract_mods_deep() {
         assert doc.topmod.mods[0].mods[0].mods[0].name == "c";
     }
 
+    #[test]
+    fn extract_should_set_mod_ast_id() {
+        let source = "mod a { }";
+        let ast = parse::from_str(source);
+        let doc = extract(ast, "");
+        assert doc.topmod.mods[0].id != 0;
+    }
+
     #[test]
     fn extract_fns() {
         let source =
index ae6ce36136ce43920ac0adff0d8bcd9885d3c1f8..0afc625378d4a6fa5f2801e4f03a9f35c2c58bbb 100644 (file)
@@ -11,7 +11,7 @@ fn new_parse_sess() -> parser::parse_sess {
     let cm = codemap::new_codemap();
     let sess = @{
         cm: cm,
-        mutable next_id: 0,
+        mutable next_id: 1,
         diagnostic: diagnostic::mk_handler(cm, none)
     };
     ret sess;
index ba58c490902399867f4e31da9ad2a17567f40de6..b58850b7e3ec32c2fd1d88eb1be856c40270e452 100755 (executable)
@@ -26,6 +26,7 @@ fn pass1(
     ) -> doc::cratedoc {
         ~{
             topmod: ~{
+                id: 0,
                 name: doc.topmod.name + "two",
                 brief: none,
                 desc: none,
@@ -40,6 +41,7 @@ fn pass2(
     ) -> doc::cratedoc {
         ~{
             topmod: ~{
+                id: 0,
                 name: doc.topmod.name + "three",
                 brief: none,
                 desc: none,