Skip to content

Commit 784e2b7

Browse files
committed
rustdoc: Extract common item fields into itemdoc
1 parent d26fc34 commit 784e2b7

13 files changed

+423
-296
lines changed

src/rustdoc/attr_pass.rs

Lines changed: 70 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ fn fold_crate(
4949

5050
{
5151
topmod: {
52-
name: option::from_maybe(doc.topmod.name, attrs.name)
52+
item: {
53+
name: option::from_maybe(doc.topmod.name(), attrs.name)
54+
with doc.topmod.item
55+
}
5356
with doc.topmod
5457
}
5558
}
@@ -58,7 +61,7 @@ fn fold_crate(
5861
#[test]
5962
fn should_replace_top_module_name_with_crate_name() {
6063
let doc = test::mk_doc("#[link(name = \"bond\")];");
61-
assert doc.topmod.name == "bond";
64+
assert doc.topmod.name() == "bond";
6265
}
6366

6467
fn parse_item_attrs<T>(
@@ -78,13 +81,13 @@ fn parse_item_attrs<T>(
7881

7982
fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
8083
let srv = fold.ctxt;
81-
let attrs = if doc.id == ast::crate_node_id {
84+
let attrs = if doc.id() == ast::crate_node_id {
8285
// This is the top-level mod, use the crate attributes
8386
astsrv::exec(srv) {|ctxt|
8487
attr_parser::parse_mod(ctxt.ast.node.attrs)
8588
}
8689
} else {
87-
parse_item_attrs(srv, doc.id, attr_parser::parse_mod)
90+
parse_item_attrs(srv, doc.id(), attr_parser::parse_mod)
8891
};
8992
let doc = fold::default_seq_fold_mod(fold, doc);
9093
ret merge_mod_attrs(doc, attrs);
@@ -94,8 +97,11 @@ fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
9497
attrs: attr_parser::mod_attrs
9598
) -> doc::moddoc {
9699
{
97-
brief: attrs.brief,
98-
desc: attrs.desc
100+
item: {
101+
brief: attrs.brief,
102+
desc: attrs.desc
103+
with doc.item
104+
}
99105
with doc
100106
}
101107
}
@@ -104,13 +110,13 @@ fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
104110
#[test]
105111
fn fold_mod_should_extract_mod_attributes() {
106112
let doc = test::mk_doc("#[doc = \"test\"] mod a { }");
107-
assert doc.topmod.mods()[0].desc == some("test");
113+
assert doc.topmod.mods()[0].desc() == some("test");
108114
}
109115

110116
#[test]
111117
fn fold_mod_should_extract_top_mod_attributes() {
112118
let doc = test::mk_doc("#[doc = \"test\"];");
113-
assert doc.topmod.desc == some("test");
119+
assert doc.topmod.desc() == some("test");
114120
}
115121

116122
fn fold_fn(
@@ -120,16 +126,19 @@ fn fold_fn(
120126

121127
let srv = fold.ctxt;
122128

123-
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_fn);
129+
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_fn);
124130
ret merge_fn_attrs(doc, attrs);
125131

126132
fn merge_fn_attrs(
127133
doc: doc::fndoc,
128134
attrs: attr_parser::fn_attrs
129135
) -> doc::fndoc {
130136
ret {
131-
brief: attrs.brief,
132-
desc: attrs.desc,
137+
item: {
138+
brief: attrs.brief,
139+
desc: attrs.desc
140+
with doc.item
141+
},
133142
args: merge_arg_attrs(doc.args, attrs.args),
134143
return: merge_ret_attrs(doc.return, attrs.return),
135144
failure: attrs.failure
@@ -172,7 +181,7 @@ fn merge_ret_attrs(
172181
#[test]
173182
fn fold_fn_should_extract_fn_attributes() {
174183
let doc = test::mk_doc("#[doc = \"test\"] fn a() -> int { }");
175-
assert doc.topmod.fns()[0].desc == some("test");
184+
assert doc.topmod.fns()[0].desc() == some("test");
176185
}
177186

178187
#[test]
@@ -214,11 +223,14 @@ fn fold_const(
214223
doc: doc::constdoc
215224
) -> doc::constdoc {
216225
let srv = fold.ctxt;
217-
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_const);
226+
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_const);
218227

219228
{
220-
brief: attrs.brief,
221-
desc: attrs.desc
229+
item: {
230+
brief: attrs.brief,
231+
desc: attrs.desc
232+
with doc.item
233+
}
222234
with doc
223235
}
224236
}
@@ -227,23 +239,26 @@ fn fold_const(
227239
fn fold_const_should_extract_docs() {
228240
let doc = test::mk_doc("#[doc(brief = \"foo\", desc = \"bar\")]\
229241
const a: bool = true;");
230-
assert doc.topmod.consts()[0].brief == some("foo");
231-
assert doc.topmod.consts()[0].desc == some("bar");
242+
assert doc.topmod.consts()[0].brief() == some("foo");
243+
assert doc.topmod.consts()[0].desc() == some("bar");
232244
}
233245

234246
fn fold_enum(
235247
fold: fold::fold<astsrv::srv>,
236248
doc: doc::enumdoc
237249
) -> doc::enumdoc {
238250
let srv = fold.ctxt;
239-
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_enum);
251+
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_enum);
240252

241253
{
242-
brief: attrs.brief,
243-
desc: attrs.desc,
254+
item: {
255+
brief: attrs.brief,
256+
desc: attrs.desc
257+
with doc.item
258+
},
244259
variants: vec::map(doc.variants) {|variant|
245260
let attrs = astsrv::exec(srv) {|ctxt|
246-
alt check ctxt.ast_map.get(doc.id) {
261+
alt check ctxt.ast_map.get(doc.id()) {
247262
ast_map::node_item(@{
248263
node: ast::item_enum(ast_variants, _), _
249264
}, _) {
@@ -270,8 +285,8 @@ fn fold_enum(
270285
fn fold_enum_should_extract_docs() {
271286
let doc = test::mk_doc("#[doc(brief = \"a\", desc = \"b\")]\
272287
enum a { v }");
273-
assert doc.topmod.enums()[0].brief == some("a");
274-
assert doc.topmod.enums()[0].desc == some("b");
288+
assert doc.topmod.enums()[0].brief() == some("a");
289+
assert doc.topmod.enums()[0].desc() == some("b");
275290
}
276291

277292
#[test]
@@ -286,11 +301,14 @@ fn fold_res(
286301
) -> doc::resdoc {
287302

288303
let srv = fold.ctxt;
289-
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_fn);
304+
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_fn);
290305

291306
{
292-
brief: attrs.brief,
293-
desc: attrs.desc,
307+
item: {
308+
brief: attrs.brief,
309+
desc: attrs.desc
310+
with doc.item
311+
},
294312
args: vec::map(doc.args) {|doc|
295313
alt vec::find(attrs.args) {|attr|
296314
attr.name == doc.name
@@ -312,8 +330,8 @@ fn fold_res(
312330
fn fold_res_should_extract_docs() {
313331
let doc = test::mk_doc("#[doc(brief = \"a\", desc = \"b\")]\
314332
resource r(b: bool) { }");
315-
assert doc.topmod.resources()[0].brief == some("a");
316-
assert doc.topmod.resources()[0].desc == some("b");
333+
assert doc.topmod.resources()[0].brief() == some("a");
334+
assert doc.topmod.resources()[0].desc() == some("b");
317335
}
318336

319337
#[test]
@@ -330,12 +348,15 @@ fn fold_iface(
330348
) -> doc::ifacedoc {
331349
let srv = fold.ctxt;
332350
let doc = fold::default_seq_fold_iface(fold, doc);
333-
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_iface);
351+
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_iface);
334352

335353
{
336-
brief: attrs.brief,
337-
desc: attrs.desc,
338-
methods: merge_method_attrs(srv, doc.id, doc.methods)
354+
item: {
355+
brief: attrs.brief,
356+
desc: attrs.desc
357+
with doc.item
358+
},
359+
methods: merge_method_attrs(srv, doc.id(), doc.methods)
339360
with doc
340361
}
341362
}
@@ -384,7 +405,7 @@ fn merge_method_attrs(
384405
#[test]
385406
fn should_extract_iface_docs() {
386407
let doc = test::mk_doc("#[doc = \"whatever\"] iface i { fn a(); }");
387-
assert doc.topmod.ifaces()[0].desc == some("whatever");
408+
assert doc.topmod.ifaces()[0].desc() == some("whatever");
388409
}
389410

390411
#[test]
@@ -413,12 +434,15 @@ fn fold_impl(
413434
) -> doc::impldoc {
414435
let srv = fold.ctxt;
415436
let doc = fold::default_seq_fold_impl(fold, doc);
416-
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_impl);
437+
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_impl);
417438

418439
{
419-
brief: attrs.brief,
420-
desc: attrs.desc,
421-
methods: merge_method_attrs(srv, doc.id, doc.methods)
440+
item: {
441+
brief: attrs.brief,
442+
desc: attrs.desc
443+
with doc.item
444+
},
445+
methods: merge_method_attrs(srv, doc.id(), doc.methods)
422446
with doc
423447
}
424448
}
@@ -427,7 +451,7 @@ fn fold_impl(
427451
fn should_extract_impl_docs() {
428452
let doc = test::mk_doc(
429453
"#[doc = \"whatever\"] impl i for int { fn a() { } }");
430-
assert doc.topmod.impls()[0].desc == some("whatever");
454+
assert doc.topmod.impls()[0].desc() == some("whatever");
431455
}
432456

433457
#[test]
@@ -455,11 +479,14 @@ fn fold_type(
455479
) -> doc::tydoc {
456480
let srv = fold.ctxt;
457481
let doc = fold::default_seq_fold_type(fold, doc);
458-
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_type);
482+
let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_type);
459483

460484
{
461-
brief: attrs.brief,
462-
desc: attrs.desc
485+
item: {
486+
brief: attrs.brief,
487+
desc: attrs.desc
488+
with doc.item
489+
}
463490
with doc
464491
}
465492
}
@@ -469,8 +496,8 @@ fn should_extract_type_docs() {
469496
let doc = test::mk_doc(
470497
"#[doc(brief = \"brief\", desc = \"desc\")]\
471498
type t = int;");
472-
assert doc.topmod.types()[0].brief == some("brief");
473-
assert doc.topmod.types()[0].desc == some("desc");
499+
assert doc.topmod.types()[0].brief() == some("brief");
500+
assert doc.topmod.types()[0].desc() == some("desc");
474501
}
475502

476503
#[cfg(test)]

0 commit comments

Comments
 (0)