rustdoc: Use fewer unique pointers

This commit is contained in:
Brian Anderson 2012-01-30 13:05:25 -08:00
parent 0e498da47e
commit fe745f1b5d
13 changed files with 124 additions and 123 deletions

View file

@ -44,10 +44,10 @@ fn fold_crate(
attr_parser::parse_crate(attrs)
};
~{
topmod: ~{
{
topmod: {
name: option::from_maybe(doc.topmod.name, attrs.name)
with *doc.topmod
with doc.topmod
}
}
}
@ -91,10 +91,10 @@ fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
doc: doc::moddoc,
attrs: attr_parser::mod_attrs
) -> doc::moddoc {
~{
{
brief: attrs.brief,
desc: attrs.desc
with *doc
with doc
}
}
}
@ -133,13 +133,13 @@ fn fold_fn(
doc: doc::fndoc,
attrs: attr_parser::fn_attrs
) -> doc::fndoc {
ret ~{
ret {
brief: attrs.brief,
desc: attrs.desc,
args: merge_arg_attrs(doc.args, attrs.args),
return: merge_ret_attrs(doc.return, attrs.return),
failure: attrs.failure
with *doc
with doc
};
}
@ -152,9 +152,9 @@ fn fold_fn(
attr.name == doc.name
} {
some(attr) {
~{
{
desc: some(attr.desc)
with *doc
with doc
}
}
none { doc }
@ -233,10 +233,10 @@ fn fold_const(
let srv = fold.ctxt;
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_const);
~{
{
brief: attrs.brief,
desc: attrs.desc
with *doc
with doc
}
}
@ -259,7 +259,7 @@ fn fold_enum(
let srv = fold.ctxt;
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_enum);
~{
{
brief: attrs.brief,
desc: attrs.desc,
variants: vec::map(doc.variants) {|variant|
@ -278,12 +278,12 @@ fn fold_enum(
}
};
~{
{
desc: attrs.desc
with *variant
with variant
}
}
with *doc
with doc
}
}
@ -317,7 +317,7 @@ fn fold_res(
let srv = fold.ctxt;
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_fn);
~{
{
brief: attrs.brief,
desc: attrs.desc,
args: vec::map(doc.args) {|doc|
@ -325,15 +325,15 @@ fn fold_res(
attr.name == doc.name
} {
some(attr) {
~{
{
desc: some(attr.desc)
with *doc
with doc
}
}
none { doc }
}
}
with *doc
with doc
}
}

View file

@ -33,33 +33,33 @@ fn maybe_apply_op(op: op, s: option<str>) -> option<str> {
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)
with *doc
with doc
}
}
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)
with *doc
with doc
}
}
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),
args: vec::map(doc.args) {|doc|
~{
{
desc: maybe_apply_op(fold.ctxt, doc.desc)
with *doc
with doc
}
},
return: {
@ -67,35 +67,35 @@ fn fold_fn(fold: fold::fold<op>, doc: doc::fndoc) -> doc::fndoc {
with doc.return
},
failure: maybe_apply_op(fold.ctxt, doc.failure)
with *doc
with doc
}
}
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),
variants: vec::map(doc.variants) {|variant|
~{
{
desc: maybe_apply_op(fold.ctxt, variant.desc)
with *variant
with variant
}
}
with *doc
with doc
}
}
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),
args: vec::map(doc.args) {|arg|
~{
{
desc: maybe_apply_op(fold.ctxt, arg.desc)
with *arg
with arg
}
}
with *doc
with doc
}
}

View file

@ -32,10 +32,10 @@ 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);
~{
{
brief: brief,
desc: desc
with *doc
with doc
}
}
@ -43,10 +43,10 @@ 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);
~{
{
brief: brief,
desc: desc
with *doc
with doc
}
}
@ -54,10 +54,10 @@ 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);
~{
{
brief: brief,
desc: desc
with *doc
with doc
}
}
@ -65,10 +65,10 @@ 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);
~{
{
brief: brief,
desc: desc
with *doc
with doc
}
}
@ -76,10 +76,10 @@ 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);
~{
{
brief: brief,
desc: desc
with *doc
with doc
}
}

View file

@ -2,7 +2,7 @@
type ast_id = int;
type cratedoc = ~{
type cratedoc = {
topmod: moddoc,
};
@ -14,16 +14,17 @@ enum itemtag {
restag(resdoc)
}
type moddoc = ~{
type moddoc = {
id: ast_id,
name: str,
path: [str],
brief: option<str>,
desc: option<str>,
items: [itemtag]
// This box exists to break the structural recursion
items: ~[itemtag]
};
type constdoc = ~{
type constdoc = {
id: ast_id,
name: str,
brief: option<str>,
@ -31,7 +32,7 @@ type constdoc = ~{
ty: option<str>
};
type fndoc = ~{
type fndoc = {
id: ast_id,
name: str,
brief: option<str>,
@ -42,7 +43,7 @@ type fndoc = ~{
sig: option<str>
};
type argdoc = ~{
type argdoc = {
name: str,
desc: option<str>,
ty: option<str>
@ -53,7 +54,7 @@ type retdoc = {
ty: option<str>
};
type enumdoc = ~{
type enumdoc = {
id: ast_id,
name: str,
brief: option<str>,
@ -61,13 +62,13 @@ type enumdoc = ~{
variants: [variantdoc]
};
type variantdoc = ~{
type variantdoc = {
name: str,
desc: option<str>,
sig: option<str>
};
type resdoc = ~{
type resdoc = {
id: ast_id,
name: str,
brief: option<str>,
@ -79,7 +80,7 @@ type resdoc = ~{
impl util for moddoc {
fn mods() -> [moddoc] {
vec::filter_map(self.items) {|itemtag|
vec::filter_map(*self.items) {|itemtag|
alt itemtag {
modtag(moddoc) { some(moddoc) }
_ { none }
@ -88,7 +89,7 @@ impl util for moddoc {
}
fn fns() -> [fndoc] {
vec::filter_map(self.items) {|itemtag|
vec::filter_map(*self.items) {|itemtag|
alt itemtag {
fntag(fndoc) { some(fndoc) }
_ { none }
@ -97,7 +98,7 @@ impl util for moddoc {
}
fn consts() -> [constdoc] {
vec::filter_map(self.items) {|itemtag|
vec::filter_map(*self.items) {|itemtag|
alt itemtag {
consttag(constdoc) { some(constdoc) }
_ { none }
@ -106,7 +107,7 @@ impl util for moddoc {
}
fn enums() -> [enumdoc] {
vec::filter_map(self.items) {|itemtag|
vec::filter_map(*self.items) {|itemtag|
alt itemtag {
enumtag(enumdoc) { some(enumdoc) }
_ { none }
@ -115,7 +116,7 @@ impl util for moddoc {
}
fn resources() -> [resdoc] {
vec::filter_map(self.items) {|itemtag|
vec::filter_map(*self.items) {|itemtag|
alt itemtag {
restag(resdoc) { some(resdoc) }
_ { none }
@ -127,11 +128,11 @@ impl util for moddoc {
impl util for itemtag {
fn name() -> str {
alt self {
doc::modtag(~{name, _}) { name }
doc::fntag(~{name, _}) { name }
doc::consttag(~{name, _}) { name }
doc::enumtag(~{name, _}) { name }
doc::restag(~{name, _}) { name }
doc::modtag({name, _}) { name }
doc::fntag({name, _}) { name }
doc::consttag({name, _}) { name }
doc::enumtag({name, _}) { name }
doc::restag({name, _}) { name }
}
}
}

View file

@ -20,7 +20,7 @@ fn extract(
crate: @ast::crate,
default_name: str
) -> doc::cratedoc {
~{
{
topmod: top_moddoc_from_crate(crate, default_name),
}
}
@ -37,13 +37,13 @@ fn moddoc_from_mod(
name: ast::ident,
id: ast::node_id
) -> doc::moddoc {
~{
{
id: id,
name: name,
path: [],
brief: none,
desc: none,
items: vec::filter_map(module.items) {|item|
items: ~vec::filter_map(module.items) {|item|
alt item.node {
ast::item_mod(m) {
some(doc::modtag(
@ -83,7 +83,7 @@ fn fndoc_from_fn(
name: ast::ident,
id: ast::node_id
) -> doc::fndoc {
~{
{
id: id,
name: name,
brief: none,
@ -113,7 +113,7 @@ fn argdocs_from_args(args: [ast::arg]) -> [doc::argdoc] {
}
fn argdoc_from_arg(arg: ast::arg) -> doc::argdoc {
~{
{
name: arg.ident,
desc: none,
ty: none
@ -124,7 +124,7 @@ fn constdoc_from_const(
name: ast::ident,
id: ast::node_id
) -> doc::constdoc {
~{
{
id: id,
name: name,
brief: none,
@ -147,7 +147,7 @@ fn enumdoc_from_enum(
id: ast::node_id,
variants: [ast::variant]
) -> doc::enumdoc {
~{
{
id: id,
name: name,
brief: none,
@ -163,7 +163,7 @@ fn variantdocs_from_variants(
}
fn variantdoc_from_variant(variant: ast::variant) -> doc::variantdoc {
~{
{
name: variant.node.name,
desc: none,
sig: none
@ -192,7 +192,7 @@ fn resdoc_from_resource(
name: str,
id: ast::node_id
) -> doc::resdoc {
~{
{
id: id,
name: name,
brief: none,

View file

@ -69,7 +69,7 @@ fn default_seq_fold_crate<T>(
fold: fold<T>,
doc: doc::cratedoc
) -> doc::cratedoc {
~{
{
topmod: fold.fold_mod(fold, doc.topmod)
}
}
@ -78,8 +78,8 @@ fn default_seq_fold_mod<T>(
fold: fold<T>,
doc: doc::moddoc
) -> doc::moddoc {
~{
items: vec::map(doc.items) {|itemtag|
{
items: ~vec::map(*doc.items) {|itemtag|
alt itemtag {
doc::modtag(moddoc) {
doc::modtag(fold.fold_mod(fold, moddoc))
@ -98,7 +98,7 @@ fn default_seq_fold_mod<T>(
}
}
}
with *doc
with doc
}
}

View file

@ -130,7 +130,7 @@ fn write_mod_contents(
write_brief(ctxt, doc.brief);
write_desc(ctxt, doc.desc);
for itemtag in doc.items {
for itemtag in *doc.items {
alt itemtag {
doc::modtag(moddoc) { write_mod(ctxt, moddoc) }
doc::fntag(fndoc) { write_fn(ctxt, fndoc) }
@ -203,15 +203,15 @@ fn should_insert_blank_line_after_fn_signature() {
#[test]
fn should_correctly_indent_fn_signature() {
let doc = test::create_doc("fn a() { }");
let doc = ~{
topmod: ~{
items: [doc::fntag(~{
let doc = {
topmod: {
items: ~[doc::fntag({
sig: some("line 1\nline 2")
with *doc.topmod.fns()[0]
with doc.topmod.fns()[0]
})]
with *doc.topmod
with doc.topmod
}
with *doc
with doc
};
let markdown = test::write_markdown_str(doc);
assert str::contains(markdown, " line 1\n line 2");

View file

@ -32,9 +32,9 @@ fn fold_mod(fold: fold::fold<ctxt>, doc: doc::moddoc) -> doc::moddoc {
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
with *doc
with doc
}
}

View file

@ -32,8 +32,8 @@ fn fold_mod(
fold: fold::fold<ctxt>,
doc: doc::moddoc
) -> doc::moddoc {
let doc = ~{
items: vec::filter_map(doc.items) {|itemtag|
let doc = {
items: ~vec::filter_map(*doc.items) {|itemtag|
alt itemtag {
doc::modtag(moddoc) {
let doc = fold.fold_mod(fold, moddoc);
@ -78,12 +78,12 @@ fn fold_mod(
_ { some(itemtag) }
}
}
with *fold::default_seq_fold_mod(fold, doc)
with fold::default_seq_fold_mod(fold, doc)
};
fold.ctxt.have_docs =
doc.brief != none
|| doc.desc != none
|| vec::is_not_empty(doc.items);
|| vec::is_not_empty(*doc.items);
ret doc;
}
@ -92,7 +92,7 @@ fn fold_fn(
doc: doc::fndoc
) -> doc::fndoc {
let have_arg_docs = false;
let doc = ~{
let doc = {
args: vec::filter_map(doc.args) {|doc|
if option::is_some(doc.desc) {
have_arg_docs = true;
@ -109,7 +109,7 @@ fn fold_fn(
}
with doc.return
}
with *doc
with doc
};
fold.ctxt.have_docs =
@ -221,7 +221,7 @@ fn should_elide_undocumented_consts() {
}
fn fold_enum(fold: fold::fold<ctxt>, doc: doc::enumdoc) -> doc::enumdoc {
let doc = ~{
let doc = {
variants: vec::filter_map(doc.variants) {|variant|
if variant.desc != none {
some(variant)
@ -229,7 +229,7 @@ fn fold_enum(fold: fold::fold<ctxt>, doc: doc::enumdoc) -> doc::enumdoc {
none
}
}
with *fold::default_seq_fold_enum(fold, doc)
with fold::default_seq_fold_enum(fold, doc)
};
fold.ctxt.have_docs =
doc.brief != none
@ -269,7 +269,7 @@ fn should_not_elide_enums_with_documented_variants() {
}
fn fold_res(fold: fold::fold<ctxt>, doc: doc::resdoc) -> doc::resdoc {
let doc = ~{
let doc = {
args: vec::filter_map(doc.args) {|arg|
if arg.desc != none {
some(arg)
@ -277,7 +277,7 @@ fn fold_res(fold: fold::fold<ctxt>, doc: doc::resdoc) -> doc::resdoc {
none
}
}
with *fold::default_seq_fold_res(fold, doc)
with fold::default_seq_fold_res(fold, doc)
};
fold.ctxt.have_docs =
doc.brief != none

View file

@ -20,9 +20,9 @@ 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)
with *doc
{
items: ~exported_items(fold.ctxt, doc)
with doc
}
}
@ -66,13 +66,13 @@ fn exported_items_from(
doc: doc::moddoc,
is_exported: fn(astsrv::srv, str) -> bool
) -> [doc::itemtag] {
vec::filter_map(doc.items) { |itemtag|
vec::filter_map(*doc.items) { |itemtag|
let itemtag = alt itemtag {
doc::enumtag(enumdoc) {
// Also need to check variant exportedness
doc::enumtag(~{
doc::enumtag({
variants: exported_variants_from(srv, enumdoc, is_exported)
with *enumdoc
with enumdoc
})
}
_ { itemtag }

View file

@ -44,14 +44,14 @@ fn test_run_passes() {
_srv: astsrv::srv,
doc: doc::cratedoc
) -> doc::cratedoc {
~{
topmod: ~{
{
topmod: {
id: 0,
name: doc.topmod.name + "two",
path: [],
brief: none,
desc: none,
items: []
items: ~[]
}
}
}
@ -59,14 +59,14 @@ fn test_run_passes() {
_srv: astsrv::srv,
doc: doc::cratedoc
) -> doc::cratedoc {
~{
topmod: ~{
{
topmod: {
id: 0,
name: doc.topmod.name + "three",
path: [],
brief: none,
desc: none,
items: []
items: ~[]
}
}
}

View file

@ -29,9 +29,9 @@ fn fold_mod(
doc: doc::moddoc
) -> doc::moddoc {
let doc = fold::default_seq_fold_mod(fold, doc);
~{
items: sort::merge_sort(fold.ctxt, doc.items)
with *doc
{
items: ~sort::merge_sort(fold.ctxt, *doc.items)
with doc
}
}

View file

@ -32,11 +32,11 @@ 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)
with *doc
with doc
}
}
@ -122,9 +122,9 @@ fn merge_arg_tys(
vec::map2(args, tys) {|arg, ty|
// Sanity check that we're talking about the same args
assert arg.name == tuple::first(ty);
~{
{
ty: some(tuple::second(ty))
with *arg
with arg
}
}
}
@ -163,7 +163,7 @@ fn fold_const(
) -> doc::constdoc {
let srv = fold.ctxt;
~{
{
ty: some(astsrv::exec(srv) {|ctxt|
alt ctxt.ast_map.get(doc.id) {
ast_map::node_item(@{
@ -173,7 +173,7 @@ fn fold_const(
}
}
})
with *doc
with doc
}
}
@ -192,7 +192,7 @@ fn fold_enum(
) -> doc::enumdoc {
let srv = fold.ctxt;
~{
{
variants: vec::map(doc.variants) {|variant|
let sig = astsrv::exec(srv) {|ctxt|
alt ctxt.ast_map.get(doc.id) {
@ -209,12 +209,12 @@ fn fold_enum(
}
};
~{
{
sig: some(sig)
with *variant
with variant
}
}
with *doc
with doc
}
}
@ -233,7 +233,7 @@ fn fold_res(
) -> doc::resdoc {
let srv = fold.ctxt;
~{
{
args: merge_arg_tys(srv, doc.id, doc.args),
sig: some(astsrv::exec(srv) {|ctxt|
alt ctxt.ast_map.get(doc.id) {
@ -244,7 +244,7 @@ fn fold_res(
}
}
})
with *doc
with doc
}
}