rustdoc: Move mod docs into the item tag
This commit is contained in:
parent
9732e0d554
commit
f8c93bdbe1
@ -105,7 +105,7 @@ fn fold_mod_should_extract_mod_attributes() {
|
||||
let srv = astsrv::mk_srv_from_str(source);
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let fold = fold::default_seq_fold(srv);
|
||||
let doc = fold_mod(fold, doc.topmod.mods[0]);
|
||||
let doc = fold_mod(fold, doc.topmod.mods()[0]);
|
||||
assert doc.desc == some("test");
|
||||
}
|
||||
|
||||
|
@ -90,8 +90,8 @@ fn should_promote_mod_desc() {
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let doc = attr_pass::mk_pass()(srv, doc);
|
||||
let doc = run(srv, doc);
|
||||
assert doc.topmod.mods[0].brief == some("desc");
|
||||
assert doc.topmod.mods[0].desc == none;
|
||||
assert doc.topmod.mods()[0].brief == some("desc");
|
||||
assert doc.topmod.mods()[0].desc == none;
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -20,8 +20,7 @@ type moddoc = ~{
|
||||
path: [str],
|
||||
brief: option<str>,
|
||||
desc: option<str>,
|
||||
items: [itemtag],
|
||||
mods: modlist
|
||||
items: [itemtag]
|
||||
};
|
||||
|
||||
type constdoc = ~{
|
||||
@ -77,11 +76,17 @@ type resdoc = ~{
|
||||
sig: option<str>
|
||||
};
|
||||
|
||||
// Just to break the structural recursive types
|
||||
enum modlist = [moddoc];
|
||||
|
||||
impl util for moddoc {
|
||||
|
||||
fn mods() -> [moddoc] {
|
||||
vec::filter_map(self.items) {|itemtag|
|
||||
alt itemtag {
|
||||
modtag(moddoc) { some(moddoc) }
|
||||
_ { none }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn fns() -> [fndoc] {
|
||||
vec::filter_map(self.items) {|itemtag|
|
||||
alt itemtag {
|
||||
|
@ -45,6 +45,11 @@ fn moddoc_from_mod(
|
||||
desc: none,
|
||||
items: vec::filter_map(module.items) {|item|
|
||||
alt item.node {
|
||||
ast::item_mod(m) {
|
||||
some(doc::modtag(
|
||||
moddoc_from_mod(m, item.ident, item.id)
|
||||
))
|
||||
}
|
||||
ast::item_fn(decl, _, _) {
|
||||
some(doc::fntag(
|
||||
fndoc_from_fn(decl, item.ident, item.id)
|
||||
@ -69,18 +74,7 @@ fn moddoc_from_mod(
|
||||
none
|
||||
}
|
||||
}
|
||||
},
|
||||
mods: doc::modlist(
|
||||
vec::filter_map(module.items) {|item|
|
||||
alt item.node {
|
||||
ast::item_mod(m) {
|
||||
some(moddoc_from_mod(m, item.ident, item.id))
|
||||
}
|
||||
_ {
|
||||
none
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -233,8 +227,7 @@ mod tests {
|
||||
let source = ""; // empty crate
|
||||
let ast = parse::from_str(source);
|
||||
let doc = extract(ast, "");
|
||||
// FIXME #1535: These are boxed to prevent a crash
|
||||
assert ~doc.topmod.mods == ~doc::modlist([]);
|
||||
assert vec::is_empty(doc.topmod.mods());
|
||||
assert vec::is_empty(doc.topmod.fns());
|
||||
}
|
||||
|
||||
@ -243,9 +236,9 @@ mod tests {
|
||||
let source = "mod a { mod b { } mod c { } }";
|
||||
let ast = parse::from_str(source);
|
||||
let doc = extract(ast, "");
|
||||
assert doc.topmod.mods[0].name == "a";
|
||||
assert doc.topmod.mods[0].mods[0].name == "b";
|
||||
assert doc.topmod.mods[0].mods[1].name == "c";
|
||||
assert doc.topmod.mods()[0].name == "a";
|
||||
assert doc.topmod.mods()[0].mods()[0].name == "b";
|
||||
assert doc.topmod.mods()[0].mods()[1].name == "c";
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -253,7 +246,7 @@ mod tests {
|
||||
let source = "mod a { mod b { mod c { } } }";
|
||||
let ast = parse::from_str(source);
|
||||
let doc = extract(ast, "");
|
||||
assert doc.topmod.mods[0].mods[0].mods[0].name == "c";
|
||||
assert doc.topmod.mods()[0].mods()[0].mods()[0].name == "c";
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -261,7 +254,7 @@ mod tests {
|
||||
let source = "mod a { }";
|
||||
let ast = parse::from_str(source);
|
||||
let doc = extract(ast, "");
|
||||
assert doc.topmod.mods[0].id != 0;
|
||||
assert doc.topmod.mods()[0].id != 0;
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -272,7 +265,7 @@ mod tests {
|
||||
let ast = parse::from_str(source);
|
||||
let doc = extract(ast, "");
|
||||
assert doc.topmod.fns()[0].name == "a";
|
||||
assert doc.topmod.mods[0].fns()[0].name == "c";
|
||||
assert doc.topmod.mods()[0].fns()[0].name == "c";
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -2,7 +2,7 @@
|
||||
import std;
|
||||
|
||||
export fold;
|
||||
export fold_crate, fold_mod, fold_fn, fold_modlist;
|
||||
export fold_crate, fold_mod, fold_fn;
|
||||
export default_seq_fold;
|
||||
export default_seq_fold_crate;
|
||||
export default_seq_fold_mod;
|
||||
@ -19,7 +19,6 @@ type fold_fn<T> = fn~(fold: fold<T>, doc: doc::fndoc) -> doc::fndoc;
|
||||
type fold_const<T> = fn~(fold: fold<T>, doc: doc::constdoc) -> doc::constdoc;
|
||||
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 t<T> = {
|
||||
ctxt: T,
|
||||
@ -28,8 +27,7 @@ type t<T> = {
|
||||
fold_fn: fold_fn<T>,
|
||||
fold_const: fold_const<T>,
|
||||
fold_enum: fold_enum<T>,
|
||||
fold_res: fold_res<T>,
|
||||
fold_modlist: fold_modlist<T>
|
||||
fold_res: fold_res<T>
|
||||
};
|
||||
|
||||
|
||||
@ -42,8 +40,7 @@ fn mk_fold<T:copy>(
|
||||
fold_fn: fold_fn<T>,
|
||||
fold_const: fold_const<T>,
|
||||
fold_enum: fold_enum<T>,
|
||||
fold_res: fold_res<T>,
|
||||
fold_modlist: fold_modlist<T>
|
||||
fold_res: fold_res<T>
|
||||
) -> fold<T> {
|
||||
fold({
|
||||
ctxt: ctxt,
|
||||
@ -52,8 +49,7 @@ fn mk_fold<T:copy>(
|
||||
fold_fn: fold_fn,
|
||||
fold_const: fold_const,
|
||||
fold_enum: fold_enum,
|
||||
fold_res: fold_res,
|
||||
fold_modlist: fold_modlist
|
||||
fold_res: fold_res
|
||||
})
|
||||
}
|
||||
|
||||
@ -65,8 +61,7 @@ fn default_seq_fold<T:copy>(ctxt: T) -> fold<T> {
|
||||
{|f, d| default_seq_fold_fn(f, d)},
|
||||
{|f, d| default_seq_fold_const(f, d)},
|
||||
{|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_res(f, d)}
|
||||
)
|
||||
}
|
||||
|
||||
@ -86,6 +81,9 @@ fn default_seq_fold_mod<T>(
|
||||
~{
|
||||
items: vec::map(doc.items) {|itemtag|
|
||||
alt itemtag {
|
||||
doc::modtag(moddoc) {
|
||||
doc::modtag(fold.fold_mod(fold, moddoc))
|
||||
}
|
||||
doc::fntag(fndoc) {
|
||||
doc::fntag(fold.fold_fn(fold, fndoc))
|
||||
}
|
||||
@ -99,8 +97,7 @@ fn default_seq_fold_mod<T>(
|
||||
doc::restag(fold.fold_res(fold, resdoc))
|
||||
}
|
||||
}
|
||||
},
|
||||
mods: fold.fold_modlist(fold, doc.mods)
|
||||
}
|
||||
with *doc
|
||||
}
|
||||
}
|
||||
@ -133,15 +130,6 @@ fn default_seq_fold_res<T>(
|
||||
doc
|
||||
}
|
||||
|
||||
fn default_seq_fold_modlist<T>(
|
||||
fold: fold<T>,
|
||||
list: doc::modlist
|
||||
) -> doc::modlist {
|
||||
doc::modlist(vec::map(*list) {|doc|
|
||||
fold.fold_mod(fold, doc)
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn default_fold_should_produce_same_doc() {
|
||||
let source = "mod a { fn b() { } mod c { fn d() { } } }";
|
||||
|
@ -81,12 +81,9 @@ fn write_mod_contents(
|
||||
write_brief(ctxt, doc.brief);
|
||||
write_desc(ctxt, doc.desc);
|
||||
|
||||
for moddoc in *doc.mods {
|
||||
write_mod(ctxt, moddoc);
|
||||
}
|
||||
|
||||
for itemtag in doc.items {
|
||||
alt itemtag {
|
||||
doc::modtag(moddoc) { write_mod(ctxt, moddoc) }
|
||||
doc::fntag(fndoc) { write_fn(ctxt, fndoc) }
|
||||
doc::consttag(constdoc) { write_const(ctxt, constdoc) }
|
||||
doc::enumtag(enumdoc) { write_enum(ctxt, enumdoc) }
|
||||
|
@ -44,6 +44,6 @@ fn should_record_mod_paths() {
|
||||
let srv = astsrv::mk_srv_from_str(source);
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let doc = run(srv, doc);
|
||||
assert doc.topmod.mods[0].mods[0].mods[0].path == ["a", "b"];
|
||||
assert doc.topmod.mods[0].mods[1].mods[0].path == ["a", "d"];
|
||||
assert doc.topmod.mods()[0].mods()[0].mods()[0].path == ["a", "b"];
|
||||
assert doc.topmod.mods()[0].mods()[1].mods()[0].path == ["a", "d"];
|
||||
}
|
@ -22,8 +22,7 @@ fn run(
|
||||
fold_fn: fold_fn,
|
||||
fold_const: fold_const,
|
||||
fold_enum: fold_enum,
|
||||
fold_res: fold_res,
|
||||
fold_modlist: fold_modlist
|
||||
fold_res: fold_res
|
||||
with *fold::default_seq_fold(ctxt)
|
||||
});
|
||||
fold.fold_crate(fold, doc)
|
||||
@ -36,6 +35,14 @@ fn fold_mod(
|
||||
let doc = ~{
|
||||
items: vec::filter_map(doc.items) {|itemtag|
|
||||
alt itemtag {
|
||||
doc::modtag(moddoc) {
|
||||
let doc = fold.fold_mod(fold, moddoc);
|
||||
if fold.ctxt.have_docs {
|
||||
some(doc::modtag(doc))
|
||||
} else {
|
||||
none
|
||||
}
|
||||
}
|
||||
doc::fntag(fndoc) {
|
||||
let doc = fold.fold_fn(fold, fndoc);
|
||||
if fold.ctxt.have_docs {
|
||||
@ -76,7 +83,6 @@ fn fold_mod(
|
||||
fold.ctxt.have_docs =
|
||||
doc.brief != none
|
||||
|| doc.desc != none
|
||||
|| vec::is_not_empty(*doc.mods)
|
||||
|| vec::is_not_empty(doc.items);
|
||||
ret doc;
|
||||
}
|
||||
@ -156,27 +162,13 @@ fn should_not_elide_fns_with_documented_failure_conditions() {
|
||||
assert vec::is_not_empty(doc.topmod.fns());
|
||||
}
|
||||
|
||||
fn fold_modlist(
|
||||
fold: fold::fold<ctxt>,
|
||||
list: doc::modlist
|
||||
) -> doc::modlist {
|
||||
doc::modlist(vec::filter_map(*list) {|doc|
|
||||
let doc = fold.fold_mod(fold, doc);
|
||||
if fold.ctxt.have_docs {
|
||||
some(doc)
|
||||
} else {
|
||||
none
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_elide_undocumented_mods() {
|
||||
let source = "mod a { }";
|
||||
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.mods);
|
||||
assert vec::is_empty(doc.topmod.mods());
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -186,7 +178,7 @@ fn should_not_elide_undocument_mods_with_documented_mods() {
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let doc = attr_pass::mk_pass()(srv, doc);
|
||||
let doc = run(srv, doc);
|
||||
assert vec::is_not_empty(*doc.topmod.mods);
|
||||
assert vec::is_not_empty(doc.topmod.mods());
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -196,7 +188,7 @@ fn should_not_elide_undocument_mods_with_documented_fns() {
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let doc = attr_pass::mk_pass()(srv, doc);
|
||||
let doc = run(srv, doc);
|
||||
assert vec::is_not_empty(*doc.topmod.mods);
|
||||
assert vec::is_not_empty(doc.topmod.mods());
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -21,8 +21,7 @@ fn run(srv: astsrv::srv, doc: doc::cratedoc) -> doc::cratedoc {
|
||||
fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
|
||||
let doc = fold::default_seq_fold_mod(fold, doc);
|
||||
~{
|
||||
items: exported_items(fold.ctxt, doc),
|
||||
mods: doc::modlist(exported_mods(fold.ctxt, doc))
|
||||
items: exported_items(fold.ctxt, doc)
|
||||
with *doc
|
||||
}
|
||||
}
|
||||
@ -35,14 +34,6 @@ fn exported_items(srv: astsrv::srv, doc: doc::moddoc) -> [doc::itemtag] {
|
||||
)
|
||||
}
|
||||
|
||||
fn exported_mods(srv: astsrv::srv, doc: doc::moddoc) -> [doc::moddoc] {
|
||||
exported_things(
|
||||
srv, doc,
|
||||
exported_mods_from_crate,
|
||||
exported_mods_from_mod
|
||||
)
|
||||
}
|
||||
|
||||
fn exported_things<T>(
|
||||
srv: astsrv::srv,
|
||||
doc: doc::moddoc,
|
||||
@ -70,20 +61,6 @@ fn exported_items_from_mod(
|
||||
exported_items_from(srv, doc, bind is_exported_from_mod(_, doc.id, _))
|
||||
}
|
||||
|
||||
fn exported_mods_from_crate(
|
||||
srv: astsrv::srv,
|
||||
doc: doc::moddoc
|
||||
) -> [doc::moddoc] {
|
||||
exported_mods_from(srv, doc, is_exported_from_crate)
|
||||
}
|
||||
|
||||
fn exported_mods_from_mod(
|
||||
srv: astsrv::srv,
|
||||
doc: doc::moddoc
|
||||
) -> [doc::moddoc] {
|
||||
exported_mods_from(srv, doc, bind is_exported_from_mod(_, doc.id, _))
|
||||
}
|
||||
|
||||
fn exported_items_from(
|
||||
srv: astsrv::srv,
|
||||
doc: doc::moddoc,
|
||||
@ -91,6 +68,7 @@ fn exported_items_from(
|
||||
) -> [doc::itemtag] {
|
||||
vec::filter_map(doc.items) { |itemtag|
|
||||
let name = alt itemtag {
|
||||
doc::modtag(~{name, _}) { name }
|
||||
doc::fntag(~{name, _}) { name }
|
||||
doc::consttag(~{name, _}) { name }
|
||||
doc::enumtag(~{name, _}) { name }
|
||||
@ -114,20 +92,6 @@ fn exported_items_from(
|
||||
}
|
||||
}
|
||||
|
||||
fn exported_mods_from(
|
||||
srv: astsrv::srv,
|
||||
doc: doc::moddoc,
|
||||
is_exported: fn(astsrv::srv, str) -> bool
|
||||
) -> [doc::moddoc] {
|
||||
vec::filter_map(*doc.mods) { |doc|
|
||||
if is_exported(srv, doc.name) {
|
||||
some(doc)
|
||||
} else {
|
||||
none
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn exported_variants_from(
|
||||
srv: astsrv::srv,
|
||||
doc: doc::enumdoc,
|
||||
@ -175,7 +139,7 @@ fn should_prune_unexported_fns() {
|
||||
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].fns()) == 1u;
|
||||
assert vec::len(doc.topmod.mods()[0].fns()) == 1u;
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -193,7 +157,7 @@ fn should_prune_unexported_modules() {
|
||||
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].mods) == 1u;
|
||||
assert vec::len(doc.topmod.mods()[0].mods()) == 1u;
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -202,7 +166,7 @@ fn should_prune_unexported_modules_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.mods) == 1u;
|
||||
assert vec::len(doc.topmod.mods()) == 1u;
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -213,7 +177,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]
|
||||
@ -240,7 +204,7 @@ fn should_prune_unexported_enums() {
|
||||
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].enums()) == 0u;
|
||||
assert vec::len(doc.topmod.mods()[0].enums()) == 0u;
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -258,7 +222,7 @@ fn should_prune_unexported_variants() {
|
||||
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].enums()[0].variants) == 0u;
|
||||
assert vec::len(doc.topmod.mods()[0].enums()[0].variants) == 0u;
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -276,5 +240,5 @@ fn should_prune_unexported_resources() {
|
||||
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.mods[0].resources());
|
||||
assert vec::is_empty(doc.topmod.mods()[0].resources());
|
||||
}
|
||||
|
@ -51,8 +51,7 @@ fn test_run_passes() {
|
||||
path: [],
|
||||
brief: none,
|
||||
desc: none,
|
||||
items: [],
|
||||
mods: doc::modlist([])
|
||||
items: []
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -67,8 +66,7 @@ fn test_run_passes() {
|
||||
path: [],
|
||||
brief: none,
|
||||
desc: none,
|
||||
items: [],
|
||||
mods: doc::modlist([])
|
||||
items: []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,8 +22,8 @@ fn should_trim_mod() {
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let doc = attr_pass::mk_pass()(srv, doc);
|
||||
let doc = mk_pass()(srv, doc);
|
||||
assert doc.topmod.mods[0].brief == some("brief");
|
||||
assert doc.topmod.mods[0].desc == some("desc");
|
||||
assert doc.topmod.mods()[0].brief == some("brief");
|
||||
assert doc.topmod.mods()[0].desc == some("desc");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
Loading…
x
Reference in New Issue
Block a user