rustdoc: Move resource docs into the item tag
This commit is contained in:
parent
bfd8a14065
commit
40cbc89b6f
@ -344,7 +344,7 @@ fn fold_res_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_res(fold, doc.topmod.resources[0]);
|
||||
let doc = fold_res(fold, doc.topmod.resources()[0]);
|
||||
assert doc.brief == some("a");
|
||||
assert doc.desc == some("b");
|
||||
}
|
||||
@ -356,7 +356,7 @@ fn fold_res_should_extract_arg_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_res(fold, doc.topmod.resources[0]);
|
||||
let doc = fold_res(fold, doc.topmod.resources()[0]);
|
||||
assert doc.args[0].name == "a";
|
||||
assert doc.args[0].desc == some("b");
|
||||
}
|
@ -136,7 +136,7 @@ fn should_execute_op_on_resource_brief() {
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let doc = attr_pass::mk_pass()(srv, doc);
|
||||
let doc = mk_pass(str::trim)(srv, doc);
|
||||
assert doc.topmod.resources[0].brief == some("a");
|
||||
assert doc.topmod.resources()[0].brief == some("a");
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -146,7 +146,7 @@ fn should_execute_op_on_resource_desc() {
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let doc = attr_pass::mk_pass()(srv, doc);
|
||||
let doc = mk_pass(str::trim)(srv, doc);
|
||||
assert doc.topmod.resources[0].desc == some("a");
|
||||
assert doc.topmod.resources()[0].desc == some("a");
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -156,5 +156,5 @@ fn should_execute_op_on_resource_args() {
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let doc = attr_pass::mk_pass()(srv, doc);
|
||||
let doc = mk_pass(str::trim)(srv, doc);
|
||||
assert doc.topmod.resources[0].args[0].desc == some("a");
|
||||
assert doc.topmod.resources()[0].args[0].desc == some("a");
|
||||
}
|
@ -134,8 +134,8 @@ fn should_promote_resource_desc() {
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let doc = attr_pass::mk_pass()(srv, doc);
|
||||
let doc = run(srv, doc);
|
||||
assert doc.topmod.resources[0].brief == some("desc");
|
||||
assert doc.topmod.resources[0].desc == none;
|
||||
assert doc.topmod.resources()[0].brief == some("desc");
|
||||
assert doc.topmod.resources()[0].desc == none;
|
||||
}
|
||||
|
||||
fn modify(
|
||||
|
@ -24,8 +24,7 @@ type moddoc = ~{
|
||||
mods: modlist,
|
||||
fns: fnlist,
|
||||
consts: constlist,
|
||||
enums: enumlist,
|
||||
resources: reslist
|
||||
enums: enumlist
|
||||
};
|
||||
|
||||
type constdoc = ~{
|
||||
@ -86,4 +85,14 @@ enum modlist = [moddoc];
|
||||
enum constlist = [constdoc];
|
||||
enum fnlist = [fndoc];
|
||||
enum enumlist = [enumdoc];
|
||||
enum reslist = [resdoc];
|
||||
|
||||
impl util for moddoc {
|
||||
fn resources() -> [resdoc] {
|
||||
vec::filter_map(self.items) {|itemtag|
|
||||
alt itemtag {
|
||||
restag(resdoc) { some(resdoc) }
|
||||
_ { none }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -43,7 +43,18 @@ fn moddoc_from_mod(
|
||||
path: [],
|
||||
brief: none,
|
||||
desc: none,
|
||||
items: [],
|
||||
items: vec::filter_map(module.items) {|item|
|
||||
alt item.node {
|
||||
ast::item_res(decl, _, _, _, _) {
|
||||
some(doc::restag(
|
||||
resdoc_from_resource(decl, item.ident, item.id)
|
||||
))
|
||||
}
|
||||
_ {
|
||||
none
|
||||
}
|
||||
}
|
||||
},
|
||||
mods: doc::modlist(
|
||||
vec::filter_map(module.items) {|item|
|
||||
alt item.node {
|
||||
@ -88,17 +99,6 @@ fn moddoc_from_mod(
|
||||
none
|
||||
}
|
||||
}
|
||||
}),
|
||||
resources: doc::reslist(
|
||||
vec::filter_map(module.items) {|item|
|
||||
alt item.node {
|
||||
ast::item_res(decl, _, _, _, _) {
|
||||
some(resdoc_from_resource(decl, item.ident, item.id))
|
||||
}
|
||||
_ {
|
||||
none
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -232,8 +232,8 @@ fn should_extract_resources() {
|
||||
let source = "resource r(b: bool) { }";
|
||||
let ast = parse::from_str(source);
|
||||
let doc = extract(ast, "");
|
||||
assert doc.topmod.resources[0].id != 0;
|
||||
assert doc.topmod.resources[0].name == "r";
|
||||
assert doc.topmod.resources()[0].id != 0;
|
||||
assert doc.topmod.resources()[0].name == "r";
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -241,7 +241,7 @@ fn should_extract_resource_args() {
|
||||
let source = "resource r(b: bool) { }";
|
||||
let ast = parse::from_str(source);
|
||||
let doc = extract(ast, "");
|
||||
assert doc.topmod.resources[0].args[0].name == "b";
|
||||
assert doc.topmod.resources()[0].args[0].name == "b";
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -26,8 +26,6 @@ type fold_constlist<T> = fn~(
|
||||
fold: fold<T>, list: doc::constlist) -> doc::constlist;
|
||||
type fold_enumlist<T> = fn~(
|
||||
fold: fold<T>, list: doc::enumlist) -> doc::enumlist;
|
||||
type fold_reslist<T> = fn~(
|
||||
fold: fold<T>, list: doc::reslist) -> doc::reslist;
|
||||
|
||||
type t<T> = {
|
||||
ctxt: T,
|
||||
@ -41,7 +39,6 @@ type t<T> = {
|
||||
fold_fnlist: fold_fnlist<T>,
|
||||
fold_constlist: fold_constlist<T>,
|
||||
fold_enumlist: fold_enumlist<T>,
|
||||
fold_reslist: fold_reslist<T>
|
||||
};
|
||||
|
||||
|
||||
@ -58,8 +55,7 @@ fn mk_fold<T:copy>(
|
||||
fold_modlist: fold_modlist<T>,
|
||||
fold_fnlist: fold_fnlist<T>,
|
||||
fold_constlist: fold_constlist<T>,
|
||||
fold_enumlist: fold_enumlist<T>,
|
||||
fold_reslist: fold_reslist<T>
|
||||
fold_enumlist: fold_enumlist<T>
|
||||
) -> fold<T> {
|
||||
fold({
|
||||
ctxt: ctxt,
|
||||
@ -72,8 +68,7 @@ fn mk_fold<T:copy>(
|
||||
fold_modlist: fold_modlist,
|
||||
fold_fnlist: fold_fnlist,
|
||||
fold_constlist: fold_constlist,
|
||||
fold_enumlist: fold_enumlist,
|
||||
fold_reslist: fold_reslist
|
||||
fold_enumlist: fold_enumlist
|
||||
})
|
||||
}
|
||||
|
||||
@ -89,8 +84,7 @@ fn default_seq_fold<T:copy>(ctxt: T) -> fold<T> {
|
||||
{|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_enumlist(f, d)},
|
||||
{|f, d| default_seq_fold_reslist(f, d)}
|
||||
{|f, d| default_seq_fold_enumlist(f, d)}
|
||||
)
|
||||
}
|
||||
|
||||
@ -108,11 +102,17 @@ fn default_seq_fold_mod<T>(
|
||||
doc: doc::moddoc
|
||||
) -> doc::moddoc {
|
||||
~{
|
||||
items: vec::map(doc.items) {|itemtag|
|
||||
alt itemtag {
|
||||
doc::restag(resdoc) {
|
||||
doc::restag(fold.fold_res(fold, resdoc))
|
||||
}
|
||||
}
|
||||
},
|
||||
mods: fold.fold_modlist(fold, doc.mods),
|
||||
fns: fold.fold_fnlist(fold, doc.fns),
|
||||
consts: fold.fold_constlist(fold, doc.consts),
|
||||
enums: fold.fold_enumlist(fold, doc.enums),
|
||||
resources: fold.fold_reslist(fold, doc.resources)
|
||||
enums: fold.fold_enumlist(fold, doc.enums)
|
||||
with *doc
|
||||
}
|
||||
}
|
||||
@ -181,15 +181,6 @@ fn default_seq_fold_enumlist<T>(
|
||||
})
|
||||
}
|
||||
|
||||
fn default_seq_fold_reslist<T>(
|
||||
fold: fold<T>,
|
||||
list: doc::reslist
|
||||
) -> doc::reslist {
|
||||
doc::reslist(vec::map(*list) {|doc|
|
||||
fold.fold_res(fold, doc)
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn default_fold_should_produce_same_doc() {
|
||||
let source = "mod a { fn b() { } mod c { fn d() { } } }";
|
||||
|
@ -93,13 +93,15 @@ fn write_mod_contents(
|
||||
write_fn(ctxt, fndoc);
|
||||
}
|
||||
|
||||
for resdoc in *doc.resources {
|
||||
write_res(ctxt, resdoc);
|
||||
}
|
||||
|
||||
for moddoc in *doc.mods {
|
||||
write_mod(ctxt, moddoc);
|
||||
}
|
||||
|
||||
for itemtag in doc.items {
|
||||
alt itemtag {
|
||||
doc::restag(resdoc) { write_res(ctxt, resdoc) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -26,8 +26,7 @@ fn run(
|
||||
fold_modlist: fold_modlist,
|
||||
fold_fnlist: fold_fnlist,
|
||||
fold_constlist: fold_constlist,
|
||||
fold_enumlist: fold_enumlist,
|
||||
fold_reslist: fold_reslist
|
||||
fold_enumlist: fold_enumlist
|
||||
with *fold::default_seq_fold(ctxt)
|
||||
});
|
||||
fold.fold_crate(fold, doc)
|
||||
@ -37,7 +36,22 @@ fn fold_mod(
|
||||
fold: fold::fold<ctxt>,
|
||||
doc: doc::moddoc
|
||||
) -> doc::moddoc {
|
||||
let doc = fold::default_seq_fold_mod(fold, doc);
|
||||
let doc = ~{
|
||||
items: vec::filter_map(doc.items) {|itemtag|
|
||||
alt itemtag {
|
||||
doc::restag(resdoc) {
|
||||
let doc = fold.fold_res(fold, resdoc);
|
||||
if fold.ctxt.have_docs {
|
||||
some(doc::restag(doc))
|
||||
} else {
|
||||
none
|
||||
}
|
||||
}
|
||||
_ { some(itemtag) }
|
||||
}
|
||||
}
|
||||
with *fold::default_seq_fold_mod(fold, doc)
|
||||
};
|
||||
fold.ctxt.have_docs =
|
||||
doc.brief != none
|
||||
|| doc.desc != none
|
||||
@ -301,27 +315,13 @@ fn fold_res(fold: fold::fold<ctxt>, doc: doc::resdoc) -> doc::resdoc {
|
||||
ret doc;
|
||||
}
|
||||
|
||||
fn fold_reslist(
|
||||
fold: fold::fold<ctxt>,
|
||||
list: doc::reslist
|
||||
) -> doc::reslist {
|
||||
doc::reslist(vec::filter_map(*list) {|doc|
|
||||
let doc = fold.fold_res(fold, doc);
|
||||
if fold.ctxt.have_docs {
|
||||
some(doc)
|
||||
} else {
|
||||
none
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_elide_undocumented_resources() {
|
||||
let source = "resource r(a: bool) { }";
|
||||
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.resources);
|
||||
assert vec::is_empty(doc.topmod.resources());
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -332,7 +332,7 @@ fn should_elide_undocumented_resource_args() {
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let doc = attr_pass::mk_pass()(srv, doc);
|
||||
let doc = run(srv, doc);
|
||||
assert vec::is_empty(doc.topmod.resources[0].args);
|
||||
assert vec::is_empty(doc.topmod.resources()[0].args);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -343,5 +343,5 @@ fn should_not_elide_resources_with_documented_args() {
|
||||
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.resources);
|
||||
assert vec::is_not_empty(doc.topmod.resources());
|
||||
}
|
||||
|
@ -2,6 +2,8 @@
|
||||
* Copyright 2011 Google Inc.
|
||||
*/
|
||||
|
||||
import doc::util;
|
||||
|
||||
#[doc = "A single operation on the document model"]
|
||||
type pass = fn~(srv: astsrv::srv, doc: doc::cratedoc) -> doc::cratedoc;
|
||||
|
||||
@ -53,8 +55,7 @@ fn test_run_passes() {
|
||||
mods: doc::modlist([]),
|
||||
fns: doc::fnlist([]),
|
||||
consts: doc::constlist([]),
|
||||
enums: doc::enumlist([]),
|
||||
resources: doc::reslist([])
|
||||
enums: doc::enumlist([])
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -73,8 +74,7 @@ fn test_run_passes() {
|
||||
mods: doc::modlist([]),
|
||||
fns: doc::fnlist([]),
|
||||
consts: doc::constlist([]),
|
||||
enums: doc::enumlist([]),
|
||||
resources: doc::reslist([])
|
||||
enums: doc::enumlist([])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -254,7 +254,7 @@ fn should_add_resource_sigs() {
|
||||
let srv = astsrv::mk_srv_from_str(source);
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let doc = run(srv, doc);
|
||||
assert doc.topmod.resources[0].sig == some("resource r(b: bool)");
|
||||
assert doc.topmod.resources()[0].sig == some("resource r(b: bool)");
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -263,5 +263,5 @@ fn should_add_resource_arg_tys() {
|
||||
let srv = astsrv::mk_srv_from_str(source);
|
||||
let doc = extract::from_srv(srv, "");
|
||||
let doc = run(srv, doc);
|
||||
assert doc.topmod.resources[0].args[0].ty == some("bool");
|
||||
assert doc.topmod.resources()[0].args[0].ty == some("bool");
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user