about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-01-28 15:45:19 -0800
committerBrian Anderson <banderson@mozilla.com>2012-01-29 12:46:26 -0800
commit5aa6c3a49a924c077641df6c5308586a0b0390cd (patch)
tree965417e0bcf8c311764ec86b863d25cce1b537ae /src
parent95e2b1b8f91c3381b9b02b53a544a5f35eb2c853 (diff)
rustdoc: Move const docs into the item tag
Diffstat (limited to 'src')
-rw-r--r--src/rustdoc/attr_pass.rs2
-rw-r--r--src/rustdoc/desc_to_brief_pass.rs4
-rw-r--r--src/rustdoc/doc.rs13
-rw-r--r--src/rustdoc/extract.rs20
-rw-r--r--src/rustdoc/fold.rs29
-rw-r--r--src/rustdoc/markdown_pass.rs5
-rw-r--r--src/rustdoc/prune_undoc_pass.rs27
-rw-r--r--src/rustdoc/prune_unexported_pass.rs44
-rwxr-xr-xsrc/rustdoc/rustdoc.rs6
-rw-r--r--src/rustdoc/trim_pass.rs4
-rw-r--r--src/rustdoc/tystr_pass.rs2
11 files changed, 48 insertions, 108 deletions
diff --git a/src/rustdoc/attr_pass.rs b/src/rustdoc/attr_pass.rs
index bb24e4e06fd..dd8a7390fc7 100644
--- a/src/rustdoc/attr_pass.rs
+++ b/src/rustdoc/attr_pass.rs
@@ -247,7 +247,7 @@ fn fold_const_should_extract_docs() {
     let srv = astsrv::mk_srv_from_str(source);
     let doc = extract::from_srv(srv, "");
     let fold = fold::default_seq_fold(srv);
-    let doc = fold_const(fold, doc.topmod.consts[0]);
+    let doc = fold_const(fold, doc.topmod.consts()[0]);
     assert doc.brief == some("foo");
     assert doc.desc == some("bar");
 }
diff --git a/src/rustdoc/desc_to_brief_pass.rs b/src/rustdoc/desc_to_brief_pass.rs
index 3bf0ad6d4c5..f0450b69a7d 100644
--- a/src/rustdoc/desc_to_brief_pass.rs
+++ b/src/rustdoc/desc_to_brief_pass.rs
@@ -101,8 +101,8 @@ fn should_promote_const_desc() {
     let doc = extract::from_srv(srv, "");
     let doc = attr_pass::mk_pass()(srv, doc);
     let doc = run(srv, doc);
-    assert doc.topmod.consts[0].brief == some("desc");
-    assert doc.topmod.consts[0].desc == none;
+    assert doc.topmod.consts()[0].brief == some("desc");
+    assert doc.topmod.consts()[0].desc == none;
 }
 
 #[test]
diff --git a/src/rustdoc/doc.rs b/src/rustdoc/doc.rs
index 48d173ae70a..4910233bfce 100644
--- a/src/rustdoc/doc.rs
+++ b/src/rustdoc/doc.rs
@@ -22,8 +22,7 @@ type moddoc = ~{
     desc: option<str>,
     items: [itemtag],
     mods: modlist,
-    fns: fnlist,
-    consts: constlist
+    fns: fnlist
 };
 
 type constdoc = ~{
@@ -81,11 +80,19 @@ type resdoc = ~{
 
 // Just to break the structural recursive types
 enum modlist = [moddoc];
-enum constlist = [constdoc];
 enum fnlist = [fndoc];
 
 impl util for moddoc {
 
+    fn consts() -> [constdoc] {
+        vec::filter_map(self.items) {|itemtag|
+            alt itemtag {
+              consttag(constdoc) { some(constdoc) }
+              _ { none }
+            }
+        }
+    }
+
     fn enums() -> [enumdoc] {
         vec::filter_map(self.items) {|itemtag|
             alt itemtag {
diff --git a/src/rustdoc/extract.rs b/src/rustdoc/extract.rs
index 6e48f107201..f0c41c77945 100644
--- a/src/rustdoc/extract.rs
+++ b/src/rustdoc/extract.rs
@@ -45,6 +45,11 @@ fn moddoc_from_mod(
         desc: none,
         items: vec::filter_map(module.items) {|item|
             alt item.node {
+              ast::item_const(_, _) {
+                some(doc::consttag(
+                    constdoc_from_const(item.ident, item.id)
+                ))
+              }
               ast::item_enum(variants, _) {
                 some(doc::enumtag(
                     enumdoc_from_enum(item.ident, item.id, variants)
@@ -82,17 +87,6 @@ fn moddoc_from_mod(
                     none
                   }
                 }
-            }),
-        consts: doc::constlist(
-            vec::filter_map(module.items) {|item|
-                alt item.node {
-                  ast::item_const(_, _) {
-                    some(constdoc_from_const(item.ident, item.id))
-                  }
-                  _ {
-                    none
-                  }
-                }
             })
     }
 }
@@ -157,8 +151,8 @@ fn should_extract_const_name_and_id() {
     let source = "const a: int = 0;";
     let ast = parse::from_str(source);
     let doc = extract(ast, "");
-    assert doc.topmod.consts[0].id != 0;
-    assert doc.topmod.consts[0].name == "a";
+    assert doc.topmod.consts()[0].id != 0;
+    assert doc.topmod.consts()[0].name == "a";
 }
 
 fn enumdoc_from_enum(
diff --git a/src/rustdoc/fold.rs b/src/rustdoc/fold.rs
index 254193a881e..7ad102efc17 100644
--- a/src/rustdoc/fold.rs
+++ b/src/rustdoc/fold.rs
@@ -22,8 +22,6 @@ type fold_enum<T> = fn~(fold: fold<T>, doc: doc::enumdoc) -> doc::enumdoc;
 type fold_res<T> = fn~(fold: fold<T>, doc: doc::resdoc) -> doc::resdoc;
 type fold_modlist<T> = fn~(fold: fold<T>, list: doc::modlist) -> doc::modlist;
 type fold_fnlist<T> = fn~(fold: fold<T>, list: doc::fnlist) -> doc::fnlist;
-type fold_constlist<T> = fn~(
-    fold: fold<T>, list: doc::constlist) -> doc::constlist;
 
 type t<T> = {
     ctxt: T,
@@ -34,8 +32,7 @@ type t<T> = {
     fold_enum: fold_enum<T>,
     fold_res: fold_res<T>,
     fold_modlist: fold_modlist<T>,
-    fold_fnlist: fold_fnlist<T>,
-    fold_constlist: fold_constlist<T>
+    fold_fnlist: fold_fnlist<T>
 };
 
 
@@ -50,8 +47,7 @@ fn mk_fold<T:copy>(
     fold_enum: fold_enum<T>,
     fold_res: fold_res<T>,
     fold_modlist: fold_modlist<T>,
-    fold_fnlist: fold_fnlist<T>,
-    fold_constlist: fold_constlist<T>
+    fold_fnlist: fold_fnlist<T>
 ) -> fold<T> {
     fold({
         ctxt: ctxt,
@@ -62,8 +58,7 @@ fn mk_fold<T:copy>(
         fold_enum: fold_enum,
         fold_res: fold_res,
         fold_modlist: fold_modlist,
-        fold_fnlist: fold_fnlist,
-        fold_constlist: fold_constlist
+        fold_fnlist: fold_fnlist
     })
 }
 
@@ -77,8 +72,7 @@ fn default_seq_fold<T:copy>(ctxt: T) -> fold<T> {
         {|f, d| default_seq_fold_enum(f, d)},
         {|f, d| default_seq_fold_res(f, d)},
         {|f, d| default_seq_fold_modlist(f, d)},
-        {|f, d| default_seq_fold_fnlist(f, d)},
-        {|f, d| default_seq_fold_constlist(f, d)}
+        {|f, d| default_seq_fold_fnlist(f, d)}
     )
 }
 
@@ -98,6 +92,9 @@ fn default_seq_fold_mod<T>(
     ~{
         items: vec::map(doc.items) {|itemtag|
             alt itemtag {
+              doc::consttag(constdoc) {
+                doc::consttag(fold.fold_const(fold, constdoc))
+              }
               doc::enumtag(enumdoc) {
                 doc::enumtag(fold.fold_enum(fold, enumdoc))
               }
@@ -107,8 +104,7 @@ fn default_seq_fold_mod<T>(
             }
         },
         mods: fold.fold_modlist(fold, doc.mods),
-        fns: fold.fold_fnlist(fold, doc.fns),
-        consts: fold.fold_constlist(fold, doc.consts)
+        fns: fold.fold_fnlist(fold, doc.fns)
         with *doc
     }
 }
@@ -159,15 +155,6 @@ fn default_seq_fold_fnlist<T>(
     })
 }
 
-fn default_seq_fold_constlist<T>(
-    fold: fold<T>,
-    list: doc::constlist
-) -> doc::constlist {
-    doc::constlist(vec::map(*list) {|doc|
-        fold.fold_const(fold, doc)
-    })
-}
-
 #[test]
 fn default_fold_should_produce_same_doc() {
     let source = "mod a { fn b() { } mod c { fn d() { } } }";
diff --git a/src/rustdoc/markdown_pass.rs b/src/rustdoc/markdown_pass.rs
index ae94e4f7cfd..f7d450c0c40 100644
--- a/src/rustdoc/markdown_pass.rs
+++ b/src/rustdoc/markdown_pass.rs
@@ -81,10 +81,6 @@ fn write_mod_contents(
     write_brief(ctxt, doc.brief);
     write_desc(ctxt, doc.desc);
 
-    for constdoc in *doc.consts {
-        write_const(ctxt, constdoc);
-    }
-
     for fndoc in *doc.fns {
         write_fn(ctxt, fndoc);
     }
@@ -95,6 +91,7 @@ fn write_mod_contents(
 
     for itemtag in doc.items {
         alt itemtag {
+          doc::consttag(constdoc) { write_const(ctxt, constdoc) }
           doc::enumtag(enumdoc) { write_enum(ctxt, enumdoc) }
           doc::restag(resdoc) { write_res(ctxt, resdoc) }
         }
diff --git a/src/rustdoc/prune_undoc_pass.rs b/src/rustdoc/prune_undoc_pass.rs
index 8c4a11b5ad1..814079a98f2 100644
--- a/src/rustdoc/prune_undoc_pass.rs
+++ b/src/rustdoc/prune_undoc_pass.rs
@@ -24,8 +24,7 @@ fn run(
         fold_enum: fold_enum,
         fold_res: fold_res,
         fold_modlist: fold_modlist,
-        fold_fnlist: fold_fnlist,
-        fold_constlist: fold_constlist
+        fold_fnlist: fold_fnlist
         with *fold::default_seq_fold(ctxt)
     });
     fold.fold_crate(fold, doc)
@@ -38,6 +37,14 @@ fn fold_mod(
     let doc = ~{
         items: vec::filter_map(doc.items) {|itemtag|
             alt itemtag {
+              doc::consttag(constdoc) {
+                let doc = fold.fold_const(fold, constdoc);
+                if fold.ctxt.have_docs {
+                    some(doc::consttag(doc))
+                } else {
+                    none
+                }
+              }
               doc::enumtag(enumdoc) {
                 let doc = fold.fold_enum(fold, enumdoc);
                 if fold.ctxt.have_docs {
@@ -219,27 +226,13 @@ fn fold_const(
     ret doc;
 }
 
-fn fold_constlist(
-    fold: fold::fold<ctxt>,
-    list: doc::constlist
-) -> doc::constlist {
-    doc::constlist(vec::filter_map(*list) {|doc|
-        let doc = fold.fold_const(fold, doc);
-        if fold.ctxt.have_docs {
-            some(doc)
-        } else {
-            none
-        }
-    })
-}
-
 #[test]
 fn should_elide_undocumented_consts() {
     let source = "const a: bool = true;";
     let srv = astsrv::mk_srv_from_str(source);
     let doc = extract::from_srv(srv, "");
     let doc = run(srv, doc);
-    assert vec::is_empty(*doc.topmod.consts);
+    assert vec::is_empty(doc.topmod.consts());
 }
 
 fn fold_enum(fold: fold::fold<ctxt>, doc: doc::enumdoc) -> doc::enumdoc {
diff --git a/src/rustdoc/prune_unexported_pass.rs b/src/rustdoc/prune_unexported_pass.rs
index 0d17f5defba..2bf7480932c 100644
--- a/src/rustdoc/prune_unexported_pass.rs
+++ b/src/rustdoc/prune_unexported_pass.rs
@@ -23,8 +23,7 @@ fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
     ~{
         items: exported_items(fold.ctxt, doc),
         mods: doc::modlist(exported_mods(fold.ctxt, doc)),
-        fns: doc::fnlist(exported_fns(fold.ctxt, doc)),
-        consts: doc::constlist(exported_consts(fold.ctxt, doc))
+        fns: doc::fnlist(exported_fns(fold.ctxt, doc))
         with *doc
     }
 }
@@ -53,14 +52,6 @@ fn exported_fns(srv: astsrv::srv, doc: doc::moddoc) -> [doc::fndoc] {
     )
 }
 
-fn exported_consts(srv: astsrv::srv, doc: doc::moddoc) -> [doc::constdoc] {
-    exported_things(
-        srv, doc,
-        exported_consts_from_crate,
-        exported_consts_from_mod
-    )
-}
-
 fn exported_things<T>(
     srv: astsrv::srv,
     doc: doc::moddoc,
@@ -116,20 +107,6 @@ fn exported_fns_from_mod(
     exported_fns_from(srv, doc, bind is_exported_from_mod(_, doc.id, _))
 }
 
-fn exported_consts_from_crate(
-    srv: astsrv::srv,
-    doc: doc::moddoc
-) -> [doc::constdoc] {
-    exported_consts_from(srv, doc, is_exported_from_crate)
-}
-
-fn exported_consts_from_mod(
-    srv: astsrv::srv,
-    doc: doc::moddoc
-) -> [doc::constdoc] {
-    exported_consts_from(srv, doc, bind is_exported_from_mod(_, doc.id, _))
-}
-
 fn exported_items_from(
     srv: astsrv::srv,
     doc: doc::moddoc,
@@ -137,6 +114,7 @@ fn exported_items_from(
 ) -> [doc::itemtag] {
     vec::filter_map(doc.items) { |itemtag|
         let name = alt itemtag {
+          doc::consttag(~{name, _}) { name }
           doc::enumtag(~{name, _}) { name }
           doc::restag(~{name, _}) { name }
         };
@@ -186,20 +164,6 @@ fn exported_mods_from(
     }
 }
 
-fn exported_consts_from(
-    srv: astsrv::srv,
-    doc: doc::moddoc,
-    is_exported: fn(astsrv::srv, str) -> bool
-) -> [doc::constdoc] {
-    vec::filter_map(*doc.consts) { |doc|
-        if is_exported(srv, doc.name) {
-            some(doc)
-        } else {
-            none
-        }
-    }
-}
-
 fn exported_variants_from(
     srv: astsrv::srv,
     doc: doc::enumdoc,
@@ -285,7 +249,7 @@ fn should_prune_unexported_consts() {
     let srv = astsrv::mk_srv_from_str(source);
     let doc = extract::from_srv(srv, "");
     let doc = run(srv, doc);
-    assert vec::len(*doc.topmod.mods[0].consts) == 1u;
+    assert vec::len(doc.topmod.mods[0].consts()) == 1u;
 }
 
 #[test]
@@ -294,7 +258,7 @@ fn should_prune_unexported_consts_from_top_mod() {
     let srv = astsrv::mk_srv_from_str(source);
     let doc = extract::from_srv(srv, "");
     let doc = run(srv, doc);
-    assert vec::len(*doc.topmod.consts) == 1u;
+    assert vec::len(doc.topmod.consts()) == 1u;
 }
 
 #[test]
diff --git a/src/rustdoc/rustdoc.rs b/src/rustdoc/rustdoc.rs
index f65b2f789e2..0b05afe310d 100755
--- a/src/rustdoc/rustdoc.rs
+++ b/src/rustdoc/rustdoc.rs
@@ -53,8 +53,7 @@ fn test_run_passes() {
                 desc: none,
                 items: [],
                 mods: doc::modlist([]),
-                fns: doc::fnlist([]),
-                consts: doc::constlist([])
+                fns: doc::fnlist([])
             }
         }
     }
@@ -71,8 +70,7 @@ fn test_run_passes() {
                 desc: none,
                 items: [],
                 mods: doc::modlist([]),
-                fns: doc::fnlist([]),
-                consts: doc::constlist([])
+                fns: doc::fnlist([])
             }
         }
     }
diff --git a/src/rustdoc/trim_pass.rs b/src/rustdoc/trim_pass.rs
index 871605e5554..6ec3db4ec9c 100644
--- a/src/rustdoc/trim_pass.rs
+++ b/src/rustdoc/trim_pass.rs
@@ -35,8 +35,8 @@ fn should_trim_const() {
     let doc = extract::from_srv(srv, "");
     let doc = attr_pass::mk_pass()(srv, doc);
     let doc = mk_pass()(srv, doc);
-    assert doc.topmod.consts[0].brief == some("brief");
-    assert doc.topmod.consts[0].desc == some("desc");
+    assert doc.topmod.consts()[0].brief == some("brief");
+    assert doc.topmod.consts()[0].desc == some("desc");
 }
 
 #[test]
diff --git a/src/rustdoc/tystr_pass.rs b/src/rustdoc/tystr_pass.rs
index bc2e35e2622..06f69fdbb16 100644
--- a/src/rustdoc/tystr_pass.rs
+++ b/src/rustdoc/tystr_pass.rs
@@ -183,7 +183,7 @@ fn should_add_const_types() {
     let srv = astsrv::mk_srv_from_str(source);
     let doc = extract::from_srv(srv, "");
     let doc = run(srv, doc);
-    assert doc.topmod.consts[0].ty == some("bool");
+    assert doc.topmod.consts()[0].ty == some("bool");
 }
 
 fn fold_enum(