rustdoc: Extract common item fields into itemdoc

This commit is contained in:
Brian Anderson 2012-02-17 14:46:30 -08:00
parent d26fc348ef
commit 784e2b7298
13 changed files with 423 additions and 296 deletions

@ -49,7 +49,10 @@ fn fold_crate(
{
topmod: {
name: option::from_maybe(doc.topmod.name, attrs.name)
item: {
name: option::from_maybe(doc.topmod.name(), attrs.name)
with doc.topmod.item
}
with doc.topmod
}
}
@ -58,7 +61,7 @@ fn fold_crate(
#[test]
fn should_replace_top_module_name_with_crate_name() {
let doc = test::mk_doc("#[link(name = \"bond\")];");
assert doc.topmod.name == "bond";
assert doc.topmod.name() == "bond";
}
fn parse_item_attrs<T>(
@ -78,13 +81,13 @@ fn parse_item_attrs<T>(
fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
let srv = fold.ctxt;
let attrs = if doc.id == ast::crate_node_id {
let attrs = if doc.id() == ast::crate_node_id {
// This is the top-level mod, use the crate attributes
astsrv::exec(srv) {|ctxt|
attr_parser::parse_mod(ctxt.ast.node.attrs)
}
} else {
parse_item_attrs(srv, doc.id, attr_parser::parse_mod)
parse_item_attrs(srv, doc.id(), attr_parser::parse_mod)
};
let doc = fold::default_seq_fold_mod(fold, doc);
ret merge_mod_attrs(doc, attrs);
@ -94,8 +97,11 @@ fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
attrs: attr_parser::mod_attrs
) -> doc::moddoc {
{
brief: attrs.brief,
desc: attrs.desc
item: {
brief: attrs.brief,
desc: attrs.desc
with doc.item
}
with doc
}
}
@ -104,13 +110,13 @@ fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
#[test]
fn fold_mod_should_extract_mod_attributes() {
let doc = test::mk_doc("#[doc = \"test\"] mod a { }");
assert doc.topmod.mods()[0].desc == some("test");
assert doc.topmod.mods()[0].desc() == some("test");
}
#[test]
fn fold_mod_should_extract_top_mod_attributes() {
let doc = test::mk_doc("#[doc = \"test\"];");
assert doc.topmod.desc == some("test");
assert doc.topmod.desc() == some("test");
}
fn fold_fn(
@ -120,7 +126,7 @@ fn fold_fn(
let srv = fold.ctxt;
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_fn);
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_fn);
ret merge_fn_attrs(doc, attrs);
fn merge_fn_attrs(
@ -128,8 +134,11 @@ fn fold_fn(
attrs: attr_parser::fn_attrs
) -> doc::fndoc {
ret {
brief: attrs.brief,
desc: attrs.desc,
item: {
brief: attrs.brief,
desc: attrs.desc
with doc.item
},
args: merge_arg_attrs(doc.args, attrs.args),
return: merge_ret_attrs(doc.return, attrs.return),
failure: attrs.failure
@ -172,7 +181,7 @@ fn merge_ret_attrs(
#[test]
fn fold_fn_should_extract_fn_attributes() {
let doc = test::mk_doc("#[doc = \"test\"] fn a() -> int { }");
assert doc.topmod.fns()[0].desc == some("test");
assert doc.topmod.fns()[0].desc() == some("test");
}
#[test]
@ -214,11 +223,14 @@ fn fold_const(
doc: doc::constdoc
) -> doc::constdoc {
let srv = fold.ctxt;
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_const);
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_const);
{
brief: attrs.brief,
desc: attrs.desc
item: {
brief: attrs.brief,
desc: attrs.desc
with doc.item
}
with doc
}
}
@ -227,8 +239,8 @@ fn fold_const(
fn fold_const_should_extract_docs() {
let doc = test::mk_doc("#[doc(brief = \"foo\", desc = \"bar\")]\
const a: bool = true;");
assert doc.topmod.consts()[0].brief == some("foo");
assert doc.topmod.consts()[0].desc == some("bar");
assert doc.topmod.consts()[0].brief() == some("foo");
assert doc.topmod.consts()[0].desc() == some("bar");
}
fn fold_enum(
@ -236,14 +248,17 @@ fn fold_enum(
doc: doc::enumdoc
) -> doc::enumdoc {
let srv = fold.ctxt;
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_enum);
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_enum);
{
brief: attrs.brief,
desc: attrs.desc,
item: {
brief: attrs.brief,
desc: attrs.desc
with doc.item
},
variants: vec::map(doc.variants) {|variant|
let attrs = astsrv::exec(srv) {|ctxt|
alt check ctxt.ast_map.get(doc.id) {
alt check ctxt.ast_map.get(doc.id()) {
ast_map::node_item(@{
node: ast::item_enum(ast_variants, _), _
}, _) {
@ -270,8 +285,8 @@ fn fold_enum(
fn fold_enum_should_extract_docs() {
let doc = test::mk_doc("#[doc(brief = \"a\", desc = \"b\")]\
enum a { v }");
assert doc.topmod.enums()[0].brief == some("a");
assert doc.topmod.enums()[0].desc == some("b");
assert doc.topmod.enums()[0].brief() == some("a");
assert doc.topmod.enums()[0].desc() == some("b");
}
#[test]
@ -286,11 +301,14 @@ fn fold_res(
) -> doc::resdoc {
let srv = fold.ctxt;
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_fn);
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_fn);
{
brief: attrs.brief,
desc: attrs.desc,
item: {
brief: attrs.brief,
desc: attrs.desc
with doc.item
},
args: vec::map(doc.args) {|doc|
alt vec::find(attrs.args) {|attr|
attr.name == doc.name
@ -312,8 +330,8 @@ fn fold_res(
fn fold_res_should_extract_docs() {
let doc = test::mk_doc("#[doc(brief = \"a\", desc = \"b\")]\
resource r(b: bool) { }");
assert doc.topmod.resources()[0].brief == some("a");
assert doc.topmod.resources()[0].desc == some("b");
assert doc.topmod.resources()[0].brief() == some("a");
assert doc.topmod.resources()[0].desc() == some("b");
}
#[test]
@ -330,12 +348,15 @@ fn fold_iface(
) -> doc::ifacedoc {
let srv = fold.ctxt;
let doc = fold::default_seq_fold_iface(fold, doc);
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_iface);
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_iface);
{
brief: attrs.brief,
desc: attrs.desc,
methods: merge_method_attrs(srv, doc.id, doc.methods)
item: {
brief: attrs.brief,
desc: attrs.desc
with doc.item
},
methods: merge_method_attrs(srv, doc.id(), doc.methods)
with doc
}
}
@ -384,7 +405,7 @@ fn merge_method_attrs(
#[test]
fn should_extract_iface_docs() {
let doc = test::mk_doc("#[doc = \"whatever\"] iface i { fn a(); }");
assert doc.topmod.ifaces()[0].desc == some("whatever");
assert doc.topmod.ifaces()[0].desc() == some("whatever");
}
#[test]
@ -413,12 +434,15 @@ fn fold_impl(
) -> doc::impldoc {
let srv = fold.ctxt;
let doc = fold::default_seq_fold_impl(fold, doc);
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_impl);
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_impl);
{
brief: attrs.brief,
desc: attrs.desc,
methods: merge_method_attrs(srv, doc.id, doc.methods)
item: {
brief: attrs.brief,
desc: attrs.desc
with doc.item
},
methods: merge_method_attrs(srv, doc.id(), doc.methods)
with doc
}
}
@ -427,7 +451,7 @@ fn fold_impl(
fn should_extract_impl_docs() {
let doc = test::mk_doc(
"#[doc = \"whatever\"] impl i for int { fn a() { } }");
assert doc.topmod.impls()[0].desc == some("whatever");
assert doc.topmod.impls()[0].desc() == some("whatever");
}
#[test]
@ -455,11 +479,14 @@ fn fold_type(
) -> doc::tydoc {
let srv = fold.ctxt;
let doc = fold::default_seq_fold_type(fold, doc);
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_type);
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_type);
{
brief: attrs.brief,
desc: attrs.desc
item: {
brief: attrs.brief,
desc: attrs.desc
with doc.item
}
with doc
}
}
@ -469,8 +496,8 @@ fn should_extract_type_docs() {
let doc = test::mk_doc(
"#[doc(brief = \"brief\", desc = \"desc\")]\
type t = int;");
assert doc.topmod.types()[0].brief == some("brief");
assert doc.topmod.types()[0].desc == some("desc");
assert doc.topmod.types()[0].brief() == some("brief");
assert doc.topmod.types()[0].desc() == some("desc");
}
#[cfg(test)]

@ -37,8 +37,11 @@ fn fold_mod(fold: fold::fold<op>, doc: doc::moddoc) -> doc::moddoc {
let doc = fold::default_seq_fold_mod(fold, doc);
{
brief: maybe_apply_op(fold.ctxt, doc.brief),
desc: maybe_apply_op(fold.ctxt, doc.desc)
item: {
brief: maybe_apply_op(fold.ctxt, doc.brief()),
desc: maybe_apply_op(fold.ctxt, doc.desc())
with doc.item
}
with doc
}
}
@ -47,8 +50,11 @@ fn fold_const(fold: fold::fold<op>, doc: doc::constdoc) -> doc::constdoc {
let doc = fold::default_seq_fold_const(fold, doc);
{
brief: maybe_apply_op(fold.ctxt, doc.brief),
desc: maybe_apply_op(fold.ctxt, doc.desc)
item: {
brief: maybe_apply_op(fold.ctxt, doc.brief()),
desc: maybe_apply_op(fold.ctxt, doc.desc())
with doc.item
}
with doc
}
}
@ -57,8 +63,11 @@ fn fold_fn(fold: fold::fold<op>, doc: doc::fndoc) -> doc::fndoc {
let doc = fold::default_seq_fold_fn(fold, doc);
{
brief: maybe_apply_op(fold.ctxt, doc.brief),
desc: maybe_apply_op(fold.ctxt, doc.desc),
item: {
brief: maybe_apply_op(fold.ctxt, doc.brief()),
desc: maybe_apply_op(fold.ctxt, doc.desc())
with doc.item
},
args: vec::map(doc.args) {|doc|
{
desc: maybe_apply_op(fold.ctxt, doc.desc)
@ -76,8 +85,11 @@ fn fold_fn(fold: fold::fold<op>, doc: doc::fndoc) -> doc::fndoc {
fn fold_enum(fold: fold::fold<op>, doc: doc::enumdoc) -> doc::enumdoc {
{
brief: maybe_apply_op(fold.ctxt, doc.brief),
desc: maybe_apply_op(fold.ctxt, doc.desc),
item: {
brief: maybe_apply_op(fold.ctxt, doc.brief()),
desc: maybe_apply_op(fold.ctxt, doc.desc())
with doc.item
},
variants: vec::map(doc.variants) {|variant|
{
desc: maybe_apply_op(fold.ctxt, variant.desc)
@ -90,8 +102,11 @@ fn fold_enum(fold: fold::fold<op>, doc: doc::enumdoc) -> doc::enumdoc {
fn fold_res(fold: fold::fold<op>, doc: doc::resdoc) -> doc::resdoc {
{
brief: maybe_apply_op(fold.ctxt, doc.brief),
desc: maybe_apply_op(fold.ctxt, doc.desc),
item: {
brief: maybe_apply_op(fold.ctxt, doc.brief()),
desc: maybe_apply_op(fold.ctxt, doc.desc())
with doc.item
},
args: vec::map(doc.args) {|arg|
{
desc: maybe_apply_op(fold.ctxt, arg.desc)
@ -104,8 +119,11 @@ fn fold_res(fold: fold::fold<op>, doc: doc::resdoc) -> doc::resdoc {
fn fold_iface(fold: fold::fold<op>, doc: doc::ifacedoc) -> doc::ifacedoc {
{
brief: maybe_apply_op(fold.ctxt, doc.brief),
desc: maybe_apply_op(fold.ctxt, doc.desc),
item: {
brief: maybe_apply_op(fold.ctxt, doc.brief()),
desc: maybe_apply_op(fold.ctxt, doc.desc())
with doc.item
},
methods: apply_to_methods(fold.ctxt, doc.methods)
with doc
}
@ -134,8 +152,11 @@ fn apply_to_methods(op: op, docs: [doc::methoddoc]) -> [doc::methoddoc] {
fn fold_impl(fold: fold::fold<op>, doc: doc::impldoc) -> doc::impldoc {
{
brief: maybe_apply_op(fold.ctxt, doc.brief),
desc: maybe_apply_op(fold.ctxt, doc.desc),
item: {
brief: maybe_apply_op(fold.ctxt, doc.brief()),
desc: maybe_apply_op(fold.ctxt, doc.desc())
with doc.item
},
methods: apply_to_methods(fold.ctxt, doc.methods)
with doc
}
@ -143,8 +164,11 @@ fn fold_impl(fold: fold::fold<op>, doc: doc::impldoc) -> doc::impldoc {
fn fold_type(fold: fold::fold<op>, doc: doc::tydoc) -> doc::tydoc {
{
brief: maybe_apply_op(fold.ctxt, doc.brief),
desc: maybe_apply_op(fold.ctxt, doc.desc)
item: {
brief: maybe_apply_op(fold.ctxt, doc.brief()),
desc: maybe_apply_op(fold.ctxt, doc.desc())
with doc.item
}
with doc
}
}
@ -152,13 +176,13 @@ fn fold_type(fold: fold::fold<op>, doc: doc::tydoc) -> doc::tydoc {
#[test]
fn should_execute_op_on_enum_brief() {
let doc = test::mk_doc("#[doc(brief = \" a \")] enum a { b }");
assert doc.topmod.enums()[0].brief == some("a");
assert doc.topmod.enums()[0].brief() == some("a");
}
#[test]
fn should_execute_op_on_enum_desc() {
let doc = test::mk_doc("#[doc(desc = \" a \")] enum a { b }");
assert doc.topmod.enums()[0].desc == some("a");
assert doc.topmod.enums()[0].desc() == some("a");
}
#[test]
@ -170,13 +194,13 @@ fn should_execute_op_on_variant_desc() {
#[test]
fn should_execute_op_on_resource_brief() {
let doc = test::mk_doc("#[doc(brief = \" a \")] resource r(a: bool) { }");
assert doc.topmod.resources()[0].brief == some("a");
assert doc.topmod.resources()[0].brief() == some("a");
}
#[test]
fn should_execute_op_on_resource_desc() {
let doc = test::mk_doc("#[doc(desc = \" a \")] resource r(a: bool) { }");
assert doc.topmod.resources()[0].desc == some("a");
assert doc.topmod.resources()[0].desc() == some("a");
}
#[test]
@ -190,14 +214,14 @@ fn should_execute_op_on_resource_args() {
fn should_execute_op_on_iface_brief() {
let doc = test::mk_doc(
"#[doc(brief = \" a \")] iface i { fn a(); }");
assert doc.topmod.ifaces()[0].brief == some("a");
assert doc.topmod.ifaces()[0].brief() == some("a");
}
#[test]
fn should_execute_op_on_iface_desc() {
let doc = test::mk_doc(
"#[doc(desc = \" a \")] iface i { fn a(); }");
assert doc.topmod.ifaces()[0].desc == some("a");
assert doc.topmod.ifaces()[0].desc() == some("a");
}
#[test]
@ -238,14 +262,14 @@ fn should_execute_op_on_iface_method_failure_condition() {
fn should_execute_op_on_impl_brief() {
let doc = test::mk_doc(
"#[doc(brief = \" a \")] impl i for int { fn a() { } }");
assert doc.topmod.impls()[0].brief == some("a");
assert doc.topmod.impls()[0].brief() == some("a");
}
#[test]
fn should_execute_op_on_impl_desc() {
let doc = test::mk_doc(
"#[doc(desc = \" a \")] impl i for int { fn a() { } }");
assert doc.topmod.impls()[0].desc == some("a");
assert doc.topmod.impls()[0].desc() == some("a");
}
#[test]
@ -288,14 +312,14 @@ fn should_execute_op_on_impl_method_failure_condition() {
fn should_execute_op_on_type_brief() {
let doc = test::mk_doc(
"#[doc(brief = \" a \")] type t = int;");
assert doc.topmod.types()[0].brief == some("a");
assert doc.topmod.types()[0].brief() == some("a");
}
#[test]
fn should_execute_op_on_type_desc() {
let doc = test::mk_doc(
"#[doc(desc = \" a \")] type t = int;");
assert doc.topmod.types()[0].desc == some("a");
assert doc.topmod.types()[0].desc() == some("a");
}
#[cfg(test)]

@ -33,66 +33,84 @@ fn run(
fn fold_mod(fold: fold::fold<()>, doc: doc::moddoc) -> doc::moddoc {
let doc = fold::default_seq_fold_mod(fold, doc);
let (brief, desc) = modify(doc.brief, doc.desc);
let (brief, desc) = modify(doc.brief(), doc.desc());
{
brief: brief,
desc: desc
item: {
brief: brief,
desc: desc
with doc.item
}
with doc
}
}
fn fold_const(fold: fold::fold<()>, doc: doc::constdoc) -> doc::constdoc {
let doc = fold::default_seq_fold_const(fold, doc);
let (brief, desc) = modify(doc.brief, doc.desc);
let (brief, desc) = modify(doc.brief(), doc.desc());
{
brief: brief,
desc: desc
item: {
brief: brief,
desc: desc
with doc.item
}
with doc
}
}
fn fold_fn(fold: fold::fold<()>, doc: doc::fndoc) -> doc::fndoc {
let doc = fold::default_seq_fold_fn(fold, doc);
let (brief, desc) = modify(doc.brief, doc.desc);
let (brief, desc) = modify(doc.brief(), doc.desc());
{
brief: brief,
desc: desc
item: {
brief: brief,
desc: desc
with doc.item
}
with doc
}
}
fn fold_enum(fold: fold::fold<()>, doc: doc::enumdoc) -> doc::enumdoc {
let doc = fold::default_seq_fold_enum(fold, doc);
let (brief, desc) = modify(doc.brief, doc.desc);
let (brief, desc) = modify(doc.brief(), doc.desc());
{
brief: brief,
desc: desc
item: {
brief: brief,
desc: desc
with doc.item
}
with doc
}
}
fn fold_res(fold: fold::fold<()>, doc: doc::resdoc) -> doc::resdoc {
let doc = fold::default_seq_fold_res(fold, doc);
let (brief, desc) = modify(doc.brief, doc.desc);
let (brief, desc) = modify(doc.brief(), doc.desc());
{
brief: brief,
desc: desc
item: {
brief: brief,
desc: desc
with doc.item
}
with doc
}
}
fn fold_iface(fold: fold::fold<()>, doc: doc::ifacedoc) -> doc::ifacedoc {
let doc =fold::default_seq_fold_iface(fold, doc);
let (brief, desc) = modify(doc.brief, doc.desc);
let (brief, desc) = modify(doc.brief(), doc.desc());
{
brief: brief,
desc: desc,
item: {
brief: brief,
desc: desc
with doc.item
},
methods: vec::map(doc.methods) {|doc|
let (brief, desc) = modify(doc.brief, doc.desc);
@ -108,11 +126,14 @@ fn fold_iface(fold: fold::fold<()>, doc: doc::ifacedoc) -> doc::ifacedoc {
fn fold_impl(fold: fold::fold<()>, doc: doc::impldoc) -> doc::impldoc {
let doc =fold::default_seq_fold_impl(fold, doc);
let (brief, desc) = modify(doc.brief, doc.desc);
let (brief, desc) = modify(doc.brief(), doc.desc());
{
brief: brief,
desc: desc,
item: {
brief: brief,
desc: desc
with doc.item
},
methods: vec::map(doc.methods) {|doc|
let (brief, desc) = modify(doc.brief, doc.desc);
@ -128,11 +149,14 @@ fn fold_impl(fold: fold::fold<()>, doc: doc::impldoc) -> doc::impldoc {
fn fold_type(fold: fold::fold<()>, doc: doc::tydoc) -> doc::tydoc {
let doc = fold::default_seq_fold_type(fold, doc);
let (brief, desc) = modify(doc.brief, doc.desc);
let (brief, desc) = modify(doc.brief(), doc.desc());
{
brief: brief,
desc: desc
item: {
brief: brief,
desc: desc
with doc.item
}
with doc
}
}
@ -140,44 +164,44 @@ fn fold_type(fold: fold::fold<()>, doc: doc::tydoc) -> doc::tydoc {
#[test]
fn should_promote_mod_desc() {
let doc = test::mk_doc("#[doc(desc = \"desc\")] mod m { }");
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]
fn should_promote_const_desc() {
let doc = test::mk_doc("#[doc(desc = \"desc\")] const a: bool = true;");
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]
fn should_promote_fn_desc() {
let doc = test::mk_doc("#[doc(desc = \"desc\")] fn a() { }");
assert doc.topmod.fns()[0].brief == some("desc");
assert doc.topmod.fns()[0].desc == none;
assert doc.topmod.fns()[0].brief() == some("desc");
assert doc.topmod.fns()[0].desc() == none;
}
#[test]
fn should_promote_enum_desc() {
let doc = test::mk_doc("#[doc(desc = \"desc\")] enum a { b }");
assert doc.topmod.enums()[0].brief == some("desc");
assert doc.topmod.enums()[0].desc == none;
assert doc.topmod.enums()[0].brief() == some("desc");
assert doc.topmod.enums()[0].desc() == none;
}
#[test]
fn should_promote_resource_desc() {
let doc = test::mk_doc(
"#[doc(desc = \"desc\")] resource r(a: bool) { }");
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;
}
#[test]
fn should_promote_iface_desc() {
let doc = test::mk_doc("#[doc(desc = \"desc\")] iface i { fn a(); }");
assert doc.topmod.ifaces()[0].brief == some("desc");
assert doc.topmod.ifaces()[0].desc == none;
assert doc.topmod.ifaces()[0].brief() == some("desc");
assert doc.topmod.ifaces()[0].desc() == none;
}
#[test]
@ -191,8 +215,8 @@ fn should_promote_iface_method_desc() {
fn should_promote_impl_desc() {
let doc = test::mk_doc(
"#[doc(desc = \"desc\")] impl i for int { fn a() { } }");
assert doc.topmod.impls()[0].brief == some("desc");
assert doc.topmod.impls()[0].desc == none;
assert doc.topmod.impls()[0].brief() == some("desc");
assert doc.topmod.impls()[0].desc() == none;
}
#[test]
@ -206,8 +230,8 @@ fn should_promote_impl_method_desc() {
#[test]
fn should_promote_type_desc() {
let doc = test::mk_doc("#[doc(desc = \"desc\")] type t = int;");
assert doc.topmod.types()[0].brief == some("desc");
assert doc.topmod.types()[0].desc == none;
assert doc.topmod.types()[0].brief() == some("desc");
assert doc.topmod.types()[0].desc() == none;
}
#[cfg(test)]

@ -17,31 +17,27 @@ enum itemtag {
tytag(tydoc)
}
type moddoc = {
type itemdoc = {
id: ast_id,
name: str,
path: [str],
brief: option<str>,
desc: option<str>,
};
type moddoc = {
item: itemdoc,
// This box exists to break the structural recursion
items: ~[itemtag]
};
type constdoc = {
id: ast_id,
name: str,
path: [str],
brief: option<str>,
desc: option<str>,
item: itemdoc,
ty: option<str>
};
type fndoc = {
id: ast_id,
name: str,
path: [str],
brief: option<str>,
desc: option<str>,
item: itemdoc,
args: [argdoc],
return: retdoc,
failure: option<str>,
@ -60,11 +56,7 @@ type retdoc = {
};
type enumdoc = {
id: ast_id,
name: str,
path: [str],
brief: option<str>,
desc: option<str>,
item: itemdoc,
variants: [variantdoc]
};
@ -75,21 +67,13 @@ type variantdoc = {
};
type resdoc = {
id: ast_id,
name: str,
path: [str],
brief: option<str>,
desc: option<str>,
item: itemdoc,
args: [argdoc],
sig: option<str>
};
type ifacedoc = {
id: ast_id,
name: str,
path: [str],
brief: option<str>,
desc: option<str>,
item: itemdoc,
methods: [methoddoc]
};
@ -104,22 +88,14 @@ type methoddoc = {
};
type impldoc = {
id: ast_id,
name: str,
path: [str],
brief: option<str>,
desc: option<str>,
item: itemdoc,
iface_ty: option<str>,
self_ty: option<str>,
methods: [methoddoc]
};
type tydoc = {
id: ast_id,
name: str,
path: [str],
brief: option<str>,
desc: option<str>,
item: itemdoc,
sig: option<str>
};
@ -199,18 +175,75 @@ impl util for moddoc {
}
}
#[doc = "Helper methods on itemtag"]
impl util for itemtag {
fn name() -> str {
iface item {
fn item() -> itemdoc;
}
impl of item for itemtag {
fn item() -> itemdoc {
alt self {
doc::modtag({name, _}) { name }
doc::fntag({name, _}) { name }
doc::consttag({name, _}) { name }
doc::enumtag({name, _}) { name }
doc::restag({name, _}) { name }
doc::ifacetag({name, _}) { name }
doc::impltag({name, _}) { name }
doc::tytag({name, _}) { name }
doc::modtag(doc) { doc.item }
doc::fntag(doc) { doc.item }
doc::consttag(doc) { doc.item }
doc::enumtag(doc) { doc.item }
doc::restag(doc) { doc.item }
doc::ifacetag(doc) { doc.item }
doc::impltag(doc) { doc.item }
doc::tytag(doc) { doc.item }
}
}
}
impl of item for moddoc {
fn item() -> itemdoc { self.item }
}
impl of item for fndoc {
fn item() -> itemdoc { self.item }
}
impl of item for constdoc {
fn item() -> itemdoc { self.item }
}
impl of item for enumdoc {
fn item() -> itemdoc { self.item }
}
impl of item for resdoc {
fn item() -> itemdoc { self.item }
}
impl of item for ifacedoc {
fn item() -> itemdoc { self.item }
}
impl of item for impldoc {
fn item() -> itemdoc { self.item }
}
impl of item for tydoc {
fn item() -> itemdoc { self.item }
}
impl util<A:item> for A {
fn id() -> ast_id {
self.item().id
}
fn name() -> str {
self.item().name
}
fn path() -> [str] {
self.item().path
}
fn brief() -> option<str> {
self.item().brief
}
fn desc() -> option<str> {
self.item().desc
}
}

@ -38,11 +38,13 @@ fn moddoc_from_mod(
id: ast::node_id
) -> doc::moddoc {
{
id: id,
name: name,
path: [],
brief: none,
desc: none,
item: {
id: id,
name: name,
path: [],
brief: none,
desc: none,
},
items: ~vec::filter_map(module.items) {|item|
alt item.node {
ast::item_mod(m) {
@ -99,11 +101,13 @@ fn fndoc_from_fn(
id: ast::node_id
) -> doc::fndoc {
{
id: id,
name: name,
path: [],
brief: none,
desc: none,
item: {
id: id,
name: name,
path: [],
brief: none,
desc: none,
},
args: argdocs_from_args(decl.inputs),
return: {
desc: none,
@ -141,11 +145,13 @@ fn constdoc_from_const(
id: ast::node_id
) -> doc::constdoc {
{
id: id,
name: name,
path: [],
brief: none,
desc: none,
item: {
id: id,
name: name,
path: [],
brief: none,
desc: none,
},
ty: none
}
}
@ -153,8 +159,8 @@ fn constdoc_from_const(
#[test]
fn should_extract_const_name_and_id() {
let doc = test::mk_doc("const a: int = 0;");
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(
@ -163,11 +169,13 @@ fn enumdoc_from_enum(
variants: [ast::variant]
) -> doc::enumdoc {
{
id: id,
name: name,
path: [],
brief: none,
desc: none,
item: {
id: id,
name: name,
path: [],
brief: none,
desc: none,
},
variants: variantdocs_from_variants(variants)
}
}
@ -189,8 +197,8 @@ fn variantdoc_from_variant(variant: ast::variant) -> doc::variantdoc {
#[test]
fn should_extract_enums() {
let doc = test::mk_doc("enum e { v }");
assert doc.topmod.enums()[0].id != 0;
assert doc.topmod.enums()[0].name == "e";
assert doc.topmod.enums()[0].id() != 0;
assert doc.topmod.enums()[0].name() == "e";
}
#[test]
@ -205,11 +213,13 @@ fn resdoc_from_resource(
id: ast::node_id
) -> doc::resdoc {
{
id: id,
name: name,
path: [],
brief: none,
desc: none,
item: {
id: id,
name: name,
path: [],
brief: none,
desc: none,
},
args: argdocs_from_args(decl.inputs),
sig: none
}
@ -218,8 +228,8 @@ fn resdoc_from_resource(
#[test]
fn should_extract_resources() {
let doc = test::mk_doc("resource r(b: bool) { }");
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]
@ -234,11 +244,13 @@ fn ifacedoc_from_iface(
id: ast::node_id
) -> doc::ifacedoc {
{
id: id,
name: name,
path: [],
brief: none,
desc: none,
item: {
id: id,
name: name,
path: [],
brief: none,
desc: none,
},
methods: vec::map(methods) {|method|
{
name: method.ident,
@ -259,7 +271,7 @@ fn ifacedoc_from_iface(
#[test]
fn should_extract_ifaces() {
let doc = test::mk_doc("iface i { fn f(); }");
assert doc.topmod.ifaces()[0].name == "i";
assert doc.topmod.ifaces()[0].name() == "i";
}
#[test]
@ -280,11 +292,13 @@ fn impldoc_from_impl(
id: ast::node_id
) -> doc::impldoc {
{
id: id,
name: name,
path: [],
brief: none,
desc: none,
item: {
id: id,
name: name,
path: [],
brief: none,
desc: none,
},
iface_ty: none,
self_ty: none,
methods: vec::map(methods) {|method|
@ -307,13 +321,13 @@ fn impldoc_from_impl(
#[test]
fn should_extract_impls_with_names() {
let doc = test::mk_doc("impl i for int { fn a() { } }");
assert doc.topmod.impls()[0].name == "i";
assert doc.topmod.impls()[0].name() == "i";
}
#[test]
fn should_extract_impls_without_names() {
let doc = test::mk_doc("impl of i for int { fn a() { } }");
assert doc.topmod.impls()[0].name == "i";
assert doc.topmod.impls()[0].name() == "i";
}
#[test]
@ -333,11 +347,13 @@ fn tydoc_from_ty(
id: ast::node_id
) -> doc::tydoc {
{
id: id,
name: name,
path: [],
brief: none,
desc: none,
item: {
id: id,
name: name,
path: [],
brief: none,
desc: none,
},
sig: none
}
}
@ -345,7 +361,7 @@ fn tydoc_from_ty(
#[test]
fn should_extract_tys() {
let doc = test::mk_doc("type a = int;");
assert doc.topmod.types()[0].name == "a";
assert doc.topmod.types()[0].name() == "a";
}
#[cfg(test)]
@ -366,21 +382,21 @@ mod test {
#[test]
fn extract_mods() {
let doc = mk_doc("mod a { mod b { } mod 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";
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]
fn extract_mods_deep() {
let doc = mk_doc("mod a { mod b { mod c { } } }");
assert doc.topmod.mods()[0].mods()[0].mods()[0].name == "c";
assert doc.topmod.mods()[0].mods()[0].mods()[0].name() == "c";
}
#[test]
fn extract_should_set_mod_ast_id() {
let doc = mk_doc("mod a { }");
assert doc.topmod.mods()[0].id != 0;
assert doc.topmod.mods()[0].id() != 0;
}
#[test]
@ -388,14 +404,14 @@ mod test {
let doc = mk_doc(
"fn a() { } \
mod b { fn c() { } }");
assert doc.topmod.fns()[0].name == "a";
assert doc.topmod.mods()[0].fns()[0].name == "c";
assert doc.topmod.fns()[0].name() == "a";
assert doc.topmod.mods()[0].fns()[0].name() == "c";
}
#[test]
fn extract_should_set_fn_ast_id() {
let doc = mk_doc("fn a() { }");
assert doc.topmod.fns()[0].id != 0;
assert doc.topmod.fns()[0].id() != 0;
}
#[test]
@ -403,7 +419,7 @@ mod test {
let source = "";
let ast = parse::from_str(source);
let doc = extract(ast, "burp");
assert doc.topmod.name == "burp";
assert doc.topmod.name() == "burp";
}
#[test]
@ -411,6 +427,6 @@ mod test {
let source = "";
let srv = astsrv::mk_srv_from_str(source);
let doc = from_srv(srv, "name");
assert doc.topmod.name == "name";
assert doc.topmod.name() == "name";
}
}

@ -97,7 +97,7 @@ fn write_crate(
ctxt: ctxt,
doc: doc::cratedoc
) {
write_header(ctxt, h1, #fmt("Crate %s", doc.topmod.name));
write_header(ctxt, h1, #fmt("Crate %s", doc.topmod.name()));
write_top_module(ctxt, doc.topmod);
}
@ -112,7 +112,7 @@ fn write_mod(
ctxt: ctxt,
moddoc: doc::moddoc
) {
let fullpath = str::connect(moddoc.path + [moddoc.name], "::");
let fullpath = str::connect(moddoc.path() + [moddoc.name()], "::");
write_header(ctxt, h1, #fmt("Module `%s`", fullpath));
write_mod_contents(ctxt, moddoc);
}
@ -127,8 +127,8 @@ fn write_mod_contents(
ctxt: ctxt,
doc: doc::moddoc
) {
write_brief(ctxt, doc.brief);
write_desc(ctxt, doc.desc);
write_brief(ctxt, doc.brief());
write_desc(ctxt, doc.desc());
for itemtag in *doc.items {
alt itemtag {
@ -160,12 +160,12 @@ fn write_fn(
ctxt: ctxt,
doc: doc::fndoc
) {
write_header(ctxt, h2, #fmt("Function `%s`", doc.name));
write_header(ctxt, h2, #fmt("Function `%s`", doc.name()));
write_fnlike(
ctxt,
doc.sig,
doc.brief,
doc.desc,
doc.brief(),
doc.desc(),
doc.args,
doc.return,
doc.failure
@ -424,10 +424,10 @@ fn write_const(
ctxt: ctxt,
doc: doc::constdoc
) {
write_header(ctxt, h2, #fmt("Const `%s`", doc.name));
write_header(ctxt, h2, #fmt("Const `%s`", doc.name()));
write_sig(ctxt, doc.ty);
write_brief(ctxt, doc.brief);
write_desc(ctxt, doc.desc);
write_brief(ctxt, doc.brief());
write_desc(ctxt, doc.desc());
}
#[test]
@ -448,9 +448,9 @@ fn write_enum(
ctxt: ctxt,
doc: doc::enumdoc
) {
write_header(ctxt, h2, #fmt("Enum `%s`", doc.name));
write_brief(ctxt, doc.brief);
write_desc(ctxt, doc.desc);
write_header(ctxt, h2, #fmt("Enum `%s`", doc.name()));
write_brief(ctxt, doc.brief());
write_desc(ctxt, doc.desc());
write_variants(ctxt, doc.variants);
}
@ -530,10 +530,10 @@ fn should_write_variant_list_with_signatures() {
}
fn write_res(ctxt: ctxt, doc: doc::resdoc) {
write_header(ctxt, h2, #fmt("Resource `%s`", doc.name));
write_header(ctxt, h2, #fmt("Resource `%s`", doc.name()));
write_sig(ctxt, doc.sig);
write_brief(ctxt, doc.brief);
write_desc(ctxt, doc.desc);
write_brief(ctxt, doc.brief());
write_desc(ctxt, doc.desc());
write_args(ctxt, doc.args);
}
@ -557,9 +557,9 @@ fn should_write_resource_args() {
}
fn write_iface(ctxt: ctxt, doc: doc::ifacedoc) {
write_header(ctxt, h2, #fmt("Interface `%s`", doc.name));
write_brief(ctxt, doc.brief);
write_desc(ctxt, doc.desc);
write_header(ctxt, h2, #fmt("Interface `%s`", doc.name()));
write_brief(ctxt, doc.brief());
write_desc(ctxt, doc.desc());
write_methods(ctxt, doc.methods);
}
@ -656,16 +656,16 @@ fn write_impl(ctxt: ctxt, doc: doc::impldoc) {
some(iface_ty) {
write_header(ctxt, h2,
#fmt("Implementation `%s` of `%s` for `%s`",
doc.name, iface_ty, self_ty));
doc.name(), iface_ty, self_ty));
}
none {
write_header(ctxt, h2,
#fmt("Implementation `%s` for `%s`",
doc.name, self_ty));
doc.name(), self_ty));
}
}
write_brief(ctxt, doc.brief);
write_desc(ctxt, doc.desc);
write_brief(ctxt, doc.brief());
write_desc(ctxt, doc.desc());
write_methods(ctxt, doc.methods);
}
@ -748,10 +748,10 @@ fn write_type(
ctxt: ctxt,
doc: doc::tydoc
) {
write_header(ctxt, h2, #fmt("Type `%s`", doc.name));
write_header(ctxt, h2, #fmt("Type `%s`", doc.name()));
write_sig(ctxt, doc.sig);
write_brief(ctxt, doc.brief);
write_desc(ctxt, doc.desc);
write_brief(ctxt, doc.brief());
write_desc(ctxt, doc.desc());
}
#[test]

@ -27,13 +27,16 @@ fn run(srv: astsrv::srv, doc: doc::cratedoc) -> doc::cratedoc {
}
fn fold_mod(fold: fold::fold<ctxt>, doc: doc::moddoc) -> doc::moddoc {
let is_topmod = doc.id == rustc::syntax::ast::crate_node_id;
let is_topmod = doc.id() == rustc::syntax::ast::crate_node_id;
if !is_topmod { vec::push(fold.ctxt.path, doc.name); }
if !is_topmod { vec::push(fold.ctxt.path, doc.name()); }
let doc = fold::default_seq_fold_mod(fold, doc);
if !is_topmod { vec::pop(fold.ctxt.path); }
{
path: fold.ctxt.path
item: {
path: fold.ctxt.path
with doc.item
}
with doc
}
}
@ -44,6 +47,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"];
}

@ -108,8 +108,8 @@ fn fold_mod(
with fold::default_seq_fold_mod(fold, doc)
};
fold.ctxt.have_docs =
doc.brief != none
|| doc.desc != none
doc.brief() != none
|| doc.desc() != none
|| vec::is_not_empty(*doc.items);
ret doc;
}
@ -121,8 +121,8 @@ fn fold_fn(
let doc = fold::default_seq_fold_fn(fold, doc);
fold.ctxt.have_docs =
doc.brief != none
|| doc.desc != none
doc.brief() != none
|| doc.desc() != none
|| args_have_docs(doc.args)
|| doc.return.desc != none
|| doc.failure != none;
@ -183,8 +183,8 @@ fn fold_const(
) -> doc::constdoc {
let doc = fold::default_seq_fold_const(fold, doc);
fold.ctxt.have_docs =
doc.brief != none
|| doc.desc != none;
doc.brief() != none
|| doc.desc() != none;
ret doc;
}
@ -206,8 +206,8 @@ fn fold_enum(fold: fold::fold<ctxt>, doc: doc::enumdoc) -> doc::enumdoc {
with fold::default_seq_fold_enum(fold, doc)
};
fold.ctxt.have_docs =
doc.brief != none
|| doc.desc != none
doc.brief() != none
|| doc.desc() != none
|| vec::is_not_empty(doc.variants);
ret doc;
}
@ -234,8 +234,8 @@ fn fold_res(fold: fold::fold<ctxt>, doc: doc::resdoc) -> doc::resdoc {
let doc = fold::default_seq_fold_res(fold, doc);
fold.ctxt.have_docs =
doc.brief != none
|| doc.desc != none
doc.brief() != none
|| doc.desc() != none
|| args_have_docs(doc.args);
ret doc;
}
@ -260,8 +260,8 @@ fn fold_iface(
let doc = fold::default_seq_fold_iface(fold, doc);
fold.ctxt.have_docs =
doc.brief != none
|| doc.desc != none
doc.brief() != none
|| doc.desc() != none
|| methods_have_docs(doc.methods);
ret doc;
}
@ -314,8 +314,8 @@ fn fold_impl(
let doc = fold::default_seq_fold_impl(fold, doc);
fold.ctxt.have_docs =
doc.brief != none
|| doc.desc != none
doc.brief() != none
|| doc.desc() != none
|| methods_have_docs(doc.methods);
ret doc;
}
@ -351,8 +351,8 @@ fn fold_type(
let doc = fold::default_seq_fold_type(fold, doc);
fold.ctxt.have_docs =
doc.brief != none
|| doc.desc != none;
doc.brief() != none
|| doc.desc() != none;
ret doc;
}

@ -40,7 +40,7 @@ fn exported_things<T>(
from_crate: fn(astsrv::srv, doc::moddoc) -> [T],
from_mod: fn(astsrv::srv, doc::moddoc) -> [T]
) -> [T] {
if doc.id == ast::crate_node_id {
if doc.id() == ast::crate_node_id {
from_crate(srv, doc)
} else {
from_mod(srv, doc)
@ -58,7 +58,7 @@ fn exported_items_from_mod(
srv: astsrv::srv,
doc: doc::moddoc
) -> [doc::itemtag] {
exported_items_from(srv, doc, bind is_exported_from_mod(_, doc.id, _))
exported_items_from(srv, doc, bind is_exported_from_mod(_, doc.id(), _))
}
fn exported_items_from(

@ -2,6 +2,8 @@
* Copyright 2011 Google Inc.
*/
// Some utility interfaces
import doc::item;
import doc::util;
#[doc = "A single operation on the document model"]
@ -46,11 +48,10 @@ fn test_run_passes() {
) -> doc::cratedoc {
{
topmod: {
id: 0,
name: doc.topmod.name + "two",
path: [],
brief: none,
desc: none,
item: {
name: doc.topmod.name() + "two"
with doc.topmod.item
},
items: ~[]
}
}
@ -61,11 +62,10 @@ fn test_run_passes() {
) -> doc::cratedoc {
{
topmod: {
id: 0,
name: doc.topmod.name + "three",
path: [],
brief: none,
desc: none,
item: {
name: doc.topmod.name() + "three"
with doc.topmod.item
},
items: ~[]
}
}
@ -75,7 +75,7 @@ fn test_run_passes() {
let passes = [pass1, pass2];
let doc = extract::from_srv(srv, "one");
let doc = run_passes(srv, doc, passes);
assert doc.topmod.name == "onetwothree";
assert doc.topmod.name() == "onetwothree";
}
fn main(argv: [str]) {

@ -45,10 +45,10 @@ fn test() {
let srv = astsrv::mk_srv_from_str(source);
let doc = extract::from_srv(srv, "");
let doc = mk_pass(name_lteq)(srv, doc);
assert doc.topmod.mods()[0].name == "w";
assert doc.topmod.mods()[0].name() == "w";
assert doc.topmod.mods()[1].items[0].name() == "x";
assert doc.topmod.mods()[1].items[1].name() == "y";
assert doc.topmod.mods()[1].name == "z";
assert doc.topmod.mods()[1].name() == "z";
}
#[test]

@ -18,8 +18,8 @@ fn should_trim_mod() {
let doc = test::mk_doc("#[doc(brief = \"\nbrief\n\", \
desc = \"\ndesc\n\")] \
mod m { }");
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]
@ -27,8 +27,8 @@ fn should_trim_const() {
let doc = test::mk_doc("#[doc(brief = \"\nbrief\n\", \
desc = \"\ndesc\n\")] \
const a: bool = true;");
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]
@ -36,8 +36,8 @@ fn should_trim_fn() {
let doc = test::mk_doc("#[doc(brief = \"\nbrief\n\", \
desc = \"\ndesc\n\")] \
fn a() { }");
assert doc.topmod.fns()[0].brief == some("brief");
assert doc.topmod.fns()[0].desc == some("desc");
assert doc.topmod.fns()[0].brief() == some("brief");
assert doc.topmod.fns()[0].desc() == some("desc");
}
#[test]

@ -36,9 +36,9 @@ fn fold_fn(
let srv = fold.ctxt;
{
args: merge_arg_tys(srv, doc.id, doc.args),
return: merge_ret_ty(srv, doc.id, doc.return),
sig: get_fn_sig(srv, doc.id)
args: merge_arg_tys(srv, doc.id(), doc.args),
return: merge_ret_ty(srv, doc.id(), doc.return),
sig: get_fn_sig(srv, doc.id())
with doc
}
}
@ -164,7 +164,7 @@ fn fold_const(
{
ty: some(astsrv::exec(srv) {|ctxt|
alt check ctxt.ast_map.get(doc.id) {
alt check ctxt.ast_map.get(doc.id()) {
ast_map::node_item(@{
node: ast::item_const(ty, _), _
}, _) {
@ -191,7 +191,7 @@ fn fold_enum(
{
variants: vec::map(doc.variants) {|variant|
let sig = astsrv::exec(srv) {|ctxt|
alt check ctxt.ast_map.get(doc.id) {
alt check ctxt.ast_map.get(doc.id()) {
ast_map::node_item(@{
node: ast::item_enum(ast_variants, _), _
}, _) {
@ -227,13 +227,13 @@ fn fold_res(
let srv = fold.ctxt;
{
args: merge_arg_tys(srv, doc.id, doc.args),
args: merge_arg_tys(srv, doc.id(), doc.args),
sig: some(astsrv::exec(srv) {|ctxt|
alt check ctxt.ast_map.get(doc.id) {
alt check ctxt.ast_map.get(doc.id()) {
ast_map::node_item(@{
node: ast::item_res(decl, _, _, _, _), _
}, _) {
pprust::res_to_str(decl, doc.name, [])
pprust::res_to_str(decl, doc.name(), [])
}
}
})
@ -258,7 +258,7 @@ fn fold_iface(
doc: doc::ifacedoc
) -> doc::ifacedoc {
{
methods: merge_methods(fold.ctxt, doc.id, doc.methods)
methods: merge_methods(fold.ctxt, doc.id(), doc.methods)
with doc
}
}
@ -456,7 +456,7 @@ fn fold_impl(
let srv = fold.ctxt;
let (iface_ty, self_ty) = astsrv::exec(srv) {|ctxt|
alt ctxt.ast_map.get(doc.id) {
alt ctxt.ast_map.get(doc.id()) {
ast_map::node_item(@{
node: ast::item_impl(_, iface_ty, self_ty, _), _
}, _) {
@ -472,7 +472,7 @@ fn fold_impl(
{
iface_ty: iface_ty,
self_ty: self_ty,
methods: merge_methods(fold.ctxt, doc.id, doc.methods)
methods: merge_methods(fold.ctxt, doc.id(), doc.methods)
with doc
}
}
@ -530,7 +530,7 @@ fn fold_type(
{
sig: astsrv::exec(srv) {|ctxt|
alt ctxt.ast_map.get(doc.id) {
alt ctxt.ast_map.get(doc.id()) {
ast_map::node_item(@{
ident: ident,
node: ast::item_ty(ty, params), _