Skip to content

Commit 40cbc89

Browse files
committed
rustdoc: Move resource docs into the item tag
1 parent bfd8a14 commit 40cbc89

File tree

10 files changed

+77
-75
lines changed

10 files changed

+77
-75
lines changed

src/rustdoc/attr_pass.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ fn fold_res_should_extract_docs() {
344344
let srv = astsrv::mk_srv_from_str(source);
345345
let doc = extract::from_srv(srv, "");
346346
let fold = fold::default_seq_fold(srv);
347-
let doc = fold_res(fold, doc.topmod.resources[0]);
347+
let doc = fold_res(fold, doc.topmod.resources()[0]);
348348
assert doc.brief == some("a");
349349
assert doc.desc == some("b");
350350
}
@@ -356,7 +356,7 @@ fn fold_res_should_extract_arg_docs() {
356356
let srv = astsrv::mk_srv_from_str(source);
357357
let doc = extract::from_srv(srv, "");
358358
let fold = fold::default_seq_fold(srv);
359-
let doc = fold_res(fold, doc.topmod.resources[0]);
359+
let doc = fold_res(fold, doc.topmod.resources()[0]);
360360
assert doc.args[0].name == "a";
361361
assert doc.args[0].desc == some("b");
362362
}

src/rustdoc/desc_pass.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ fn should_execute_op_on_resource_brief() {
136136
let doc = extract::from_srv(srv, "");
137137
let doc = attr_pass::mk_pass()(srv, doc);
138138
let doc = mk_pass(str::trim)(srv, doc);
139-
assert doc.topmod.resources[0].brief == some("a");
139+
assert doc.topmod.resources()[0].brief == some("a");
140140
}
141141

142142
#[test]
@@ -146,7 +146,7 @@ fn should_execute_op_on_resource_desc() {
146146
let doc = extract::from_srv(srv, "");
147147
let doc = attr_pass::mk_pass()(srv, doc);
148148
let doc = mk_pass(str::trim)(srv, doc);
149-
assert doc.topmod.resources[0].desc == some("a");
149+
assert doc.topmod.resources()[0].desc == some("a");
150150
}
151151

152152
#[test]
@@ -156,5 +156,5 @@ fn should_execute_op_on_resource_args() {
156156
let doc = extract::from_srv(srv, "");
157157
let doc = attr_pass::mk_pass()(srv, doc);
158158
let doc = mk_pass(str::trim)(srv, doc);
159-
assert doc.topmod.resources[0].args[0].desc == some("a");
159+
assert doc.topmod.resources()[0].args[0].desc == some("a");
160160
}

src/rustdoc/desc_to_brief_pass.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ fn should_promote_resource_desc() {
134134
let doc = extract::from_srv(srv, "");
135135
let doc = attr_pass::mk_pass()(srv, doc);
136136
let doc = run(srv, doc);
137-
assert doc.topmod.resources[0].brief == some("desc");
138-
assert doc.topmod.resources[0].desc == none;
137+
assert doc.topmod.resources()[0].brief == some("desc");
138+
assert doc.topmod.resources()[0].desc == none;
139139
}
140140

141141
fn modify(

src/rustdoc/doc.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ type moddoc = ~{
2424
mods: modlist,
2525
fns: fnlist,
2626
consts: constlist,
27-
enums: enumlist,
28-
resources: reslist
27+
enums: enumlist
2928
};
3029

3130
type constdoc = ~{
@@ -86,4 +85,14 @@ enum modlist = [moddoc];
8685
enum constlist = [constdoc];
8786
enum fnlist = [fndoc];
8887
enum enumlist = [enumdoc];
89-
enum reslist = [resdoc];
88+
89+
impl util for moddoc {
90+
fn resources() -> [resdoc] {
91+
vec::filter_map(self.items) {|itemtag|
92+
alt itemtag {
93+
restag(resdoc) { some(resdoc) }
94+
_ { none }
95+
}
96+
}
97+
}
98+
}

src/rustdoc/extract.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,18 @@ fn moddoc_from_mod(
4343
path: [],
4444
brief: none,
4545
desc: none,
46-
items: [],
46+
items: vec::filter_map(module.items) {|item|
47+
alt item.node {
48+
ast::item_res(decl, _, _, _, _) {
49+
some(doc::restag(
50+
resdoc_from_resource(decl, item.ident, item.id)
51+
))
52+
}
53+
_ {
54+
none
55+
}
56+
}
57+
},
4758
mods: doc::modlist(
4859
vec::filter_map(module.items) {|item|
4960
alt item.node {
@@ -88,17 +99,6 @@ fn moddoc_from_mod(
8899
none
89100
}
90101
}
91-
}),
92-
resources: doc::reslist(
93-
vec::filter_map(module.items) {|item|
94-
alt item.node {
95-
ast::item_res(decl, _, _, _, _) {
96-
some(resdoc_from_resource(decl, item.ident, item.id))
97-
}
98-
_ {
99-
none
100-
}
101-
}
102102
})
103103
}
104104
}
@@ -232,16 +232,16 @@ fn should_extract_resources() {
232232
let source = "resource r(b: bool) { }";
233233
let ast = parse::from_str(source);
234234
let doc = extract(ast, "");
235-
assert doc.topmod.resources[0].id != 0;
236-
assert doc.topmod.resources[0].name == "r";
235+
assert doc.topmod.resources()[0].id != 0;
236+
assert doc.topmod.resources()[0].name == "r";
237237
}
238238

239239
#[test]
240240
fn should_extract_resource_args() {
241241
let source = "resource r(b: bool) { }";
242242
let ast = parse::from_str(source);
243243
let doc = extract(ast, "");
244-
assert doc.topmod.resources[0].args[0].name == "b";
244+
assert doc.topmod.resources()[0].args[0].name == "b";
245245
}
246246

247247
#[cfg(test)]

src/rustdoc/fold.rs

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ type fold_constlist<T> = fn~(
2626
fold: fold<T>, list: doc::constlist) -> doc::constlist;
2727
type fold_enumlist<T> = fn~(
2828
fold: fold<T>, list: doc::enumlist) -> doc::enumlist;
29-
type fold_reslist<T> = fn~(
30-
fold: fold<T>, list: doc::reslist) -> doc::reslist;
3129

3230
type t<T> = {
3331
ctxt: T,
@@ -41,7 +39,6 @@ type t<T> = {
4139
fold_fnlist: fold_fnlist<T>,
4240
fold_constlist: fold_constlist<T>,
4341
fold_enumlist: fold_enumlist<T>,
44-
fold_reslist: fold_reslist<T>
4542
};
4643

4744

@@ -58,8 +55,7 @@ fn mk_fold<T:copy>(
5855
fold_modlist: fold_modlist<T>,
5956
fold_fnlist: fold_fnlist<T>,
6057
fold_constlist: fold_constlist<T>,
61-
fold_enumlist: fold_enumlist<T>,
62-
fold_reslist: fold_reslist<T>
58+
fold_enumlist: fold_enumlist<T>
6359
) -> fold<T> {
6460
fold({
6561
ctxt: ctxt,
@@ -72,8 +68,7 @@ fn mk_fold<T:copy>(
7268
fold_modlist: fold_modlist,
7369
fold_fnlist: fold_fnlist,
7470
fold_constlist: fold_constlist,
75-
fold_enumlist: fold_enumlist,
76-
fold_reslist: fold_reslist
71+
fold_enumlist: fold_enumlist
7772
})
7873
}
7974

@@ -89,8 +84,7 @@ fn default_seq_fold<T:copy>(ctxt: T) -> fold<T> {
8984
{|f, d| default_seq_fold_modlist(f, d)},
9085
{|f, d| default_seq_fold_fnlist(f, d)},
9186
{|f, d| default_seq_fold_constlist(f, d)},
92-
{|f, d| default_seq_fold_enumlist(f, d)},
93-
{|f, d| default_seq_fold_reslist(f, d)}
87+
{|f, d| default_seq_fold_enumlist(f, d)}
9488
)
9589
}
9690

@@ -108,11 +102,17 @@ fn default_seq_fold_mod<T>(
108102
doc: doc::moddoc
109103
) -> doc::moddoc {
110104
~{
105+
items: vec::map(doc.items) {|itemtag|
106+
alt itemtag {
107+
doc::restag(resdoc) {
108+
doc::restag(fold.fold_res(fold, resdoc))
109+
}
110+
}
111+
},
111112
mods: fold.fold_modlist(fold, doc.mods),
112113
fns: fold.fold_fnlist(fold, doc.fns),
113114
consts: fold.fold_constlist(fold, doc.consts),
114-
enums: fold.fold_enumlist(fold, doc.enums),
115-
resources: fold.fold_reslist(fold, doc.resources)
115+
enums: fold.fold_enumlist(fold, doc.enums)
116116
with *doc
117117
}
118118
}
@@ -181,15 +181,6 @@ fn default_seq_fold_enumlist<T>(
181181
})
182182
}
183183

184-
fn default_seq_fold_reslist<T>(
185-
fold: fold<T>,
186-
list: doc::reslist
187-
) -> doc::reslist {
188-
doc::reslist(vec::map(*list) {|doc|
189-
fold.fold_res(fold, doc)
190-
})
191-
}
192-
193184
#[test]
194185
fn default_fold_should_produce_same_doc() {
195186
let source = "mod a { fn b() { } mod c { fn d() { } } }";

src/rustdoc/markdown_pass.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,15 @@ fn write_mod_contents(
9393
write_fn(ctxt, fndoc);
9494
}
9595

96-
for resdoc in *doc.resources {
97-
write_res(ctxt, resdoc);
98-
}
99-
10096
for moddoc in *doc.mods {
10197
write_mod(ctxt, moddoc);
10298
}
99+
100+
for itemtag in doc.items {
101+
alt itemtag {
102+
doc::restag(resdoc) { write_res(ctxt, resdoc) }
103+
}
104+
}
103105
}
104106

105107
#[test]

src/rustdoc/prune_undoc_pass.rs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ fn run(
2626
fold_modlist: fold_modlist,
2727
fold_fnlist: fold_fnlist,
2828
fold_constlist: fold_constlist,
29-
fold_enumlist: fold_enumlist,
30-
fold_reslist: fold_reslist
29+
fold_enumlist: fold_enumlist
3130
with *fold::default_seq_fold(ctxt)
3231
});
3332
fold.fold_crate(fold, doc)
@@ -37,7 +36,22 @@ fn fold_mod(
3736
fold: fold::fold<ctxt>,
3837
doc: doc::moddoc
3938
) -> doc::moddoc {
40-
let doc = fold::default_seq_fold_mod(fold, doc);
39+
let doc = ~{
40+
items: vec::filter_map(doc.items) {|itemtag|
41+
alt itemtag {
42+
doc::restag(resdoc) {
43+
let doc = fold.fold_res(fold, resdoc);
44+
if fold.ctxt.have_docs {
45+
some(doc::restag(doc))
46+
} else {
47+
none
48+
}
49+
}
50+
_ { some(itemtag) }
51+
}
52+
}
53+
with *fold::default_seq_fold_mod(fold, doc)
54+
};
4155
fold.ctxt.have_docs =
4256
doc.brief != none
4357
|| doc.desc != none
@@ -301,27 +315,13 @@ fn fold_res(fold: fold::fold<ctxt>, doc: doc::resdoc) -> doc::resdoc {
301315
ret doc;
302316
}
303317

304-
fn fold_reslist(
305-
fold: fold::fold<ctxt>,
306-
list: doc::reslist
307-
) -> doc::reslist {
308-
doc::reslist(vec::filter_map(*list) {|doc|
309-
let doc = fold.fold_res(fold, doc);
310-
if fold.ctxt.have_docs {
311-
some(doc)
312-
} else {
313-
none
314-
}
315-
})
316-
}
317-
318318
#[test]
319319
fn should_elide_undocumented_resources() {
320320
let source = "resource r(a: bool) { }";
321321
let srv = astsrv::mk_srv_from_str(source);
322322
let doc = extract::from_srv(srv, "");
323323
let doc = run(srv, doc);
324-
assert vec::is_empty(*doc.topmod.resources);
324+
assert vec::is_empty(doc.topmod.resources());
325325
}
326326

327327
#[test]
@@ -332,7 +332,7 @@ fn should_elide_undocumented_resource_args() {
332332
let doc = extract::from_srv(srv, "");
333333
let doc = attr_pass::mk_pass()(srv, doc);
334334
let doc = run(srv, doc);
335-
assert vec::is_empty(doc.topmod.resources[0].args);
335+
assert vec::is_empty(doc.topmod.resources()[0].args);
336336
}
337337

338338
#[test]
@@ -343,5 +343,5 @@ fn should_not_elide_resources_with_documented_args() {
343343
let doc = extract::from_srv(srv, "");
344344
let doc = attr_pass::mk_pass()(srv, doc);
345345
let doc = run(srv, doc);
346-
assert vec::is_not_empty(*doc.topmod.resources);
346+
assert vec::is_not_empty(doc.topmod.resources());
347347
}

src/rustdoc/rustdoc.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
* Copyright 2011 Google Inc.
33
*/
44

5+
import doc::util;
6+
57
#[doc = "A single operation on the document model"]
68
type pass = fn~(srv: astsrv::srv, doc: doc::cratedoc) -> doc::cratedoc;
79

@@ -53,8 +55,7 @@ fn test_run_passes() {
5355
mods: doc::modlist([]),
5456
fns: doc::fnlist([]),
5557
consts: doc::constlist([]),
56-
enums: doc::enumlist([]),
57-
resources: doc::reslist([])
58+
enums: doc::enumlist([])
5859
}
5960
}
6061
}
@@ -73,8 +74,7 @@ fn test_run_passes() {
7374
mods: doc::modlist([]),
7475
fns: doc::fnlist([]),
7576
consts: doc::constlist([]),
76-
enums: doc::enumlist([]),
77-
resources: doc::reslist([])
77+
enums: doc::enumlist([])
7878
}
7979
}
8080
}

src/rustdoc/tystr_pass.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ fn should_add_resource_sigs() {
254254
let srv = astsrv::mk_srv_from_str(source);
255255
let doc = extract::from_srv(srv, "");
256256
let doc = run(srv, doc);
257-
assert doc.topmod.resources[0].sig == some("resource r(b: bool)");
257+
assert doc.topmod.resources()[0].sig == some("resource r(b: bool)");
258258
}
259259

260260
#[test]
@@ -263,5 +263,5 @@ fn should_add_resource_arg_tys() {
263263
let srv = astsrv::mk_srv_from_str(source);
264264
let doc = extract::from_srv(srv, "");
265265
let doc = run(srv, doc);
266-
assert doc.topmod.resources[0].args[0].ty == some("bool");
266+
assert doc.topmod.resources()[0].args[0].ty == some("bool");
267267
}

0 commit comments

Comments
 (0)