Skip to content

Commit 927856c

Browse files
committed
---
yaml --- r: 7901 b: refs/heads/snap-stage3 c: f8c93bd h: refs/heads/master i: 7899: 2a9687e v: v3
1 parent 8f934b5 commit 927856c

File tree

12 files changed

+64
-127
lines changed

12 files changed

+64
-127
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
refs/heads/master: 2898dcc5d97da9427ac367542382b6239d9c0bbf
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 9732e0d554770291d69b4328f566b3067509a81e
4+
refs/heads/snap-stage3: f8c93bdbe1fa9e6131a8a552753c0c476c5f922b
55
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

branches/snap-stage3/src/rustdoc/attr_pass.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ fn fold_mod_should_extract_mod_attributes() {
105105
let srv = astsrv::mk_srv_from_str(source);
106106
let doc = extract::from_srv(srv, "");
107107
let fold = fold::default_seq_fold(srv);
108-
let doc = fold_mod(fold, doc.topmod.mods[0]);
108+
let doc = fold_mod(fold, doc.topmod.mods()[0]);
109109
assert doc.desc == some("test");
110110
}
111111

branches/snap-stage3/src/rustdoc/desc_to_brief_pass.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ fn should_promote_mod_desc() {
9090
let doc = extract::from_srv(srv, "");
9191
let doc = attr_pass::mk_pass()(srv, doc);
9292
let doc = run(srv, doc);
93-
assert doc.topmod.mods[0].brief == some("desc");
94-
assert doc.topmod.mods[0].desc == none;
93+
assert doc.topmod.mods()[0].brief == some("desc");
94+
assert doc.topmod.mods()[0].desc == none;
9595
}
9696

9797
#[test]

branches/snap-stage3/src/rustdoc/doc.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ type moddoc = ~{
2020
path: [str],
2121
brief: option<str>,
2222
desc: option<str>,
23-
items: [itemtag],
24-
mods: modlist
23+
items: [itemtag]
2524
};
2625

2726
type constdoc = ~{
@@ -77,11 +76,17 @@ type resdoc = ~{
7776
sig: option<str>
7877
};
7978

80-
// Just to break the structural recursive types
81-
enum modlist = [moddoc];
82-
8379
impl util for moddoc {
8480

81+
fn mods() -> [moddoc] {
82+
vec::filter_map(self.items) {|itemtag|
83+
alt itemtag {
84+
modtag(moddoc) { some(moddoc) }
85+
_ { none }
86+
}
87+
}
88+
}
89+
8590
fn fns() -> [fndoc] {
8691
vec::filter_map(self.items) {|itemtag|
8792
alt itemtag {

branches/snap-stage3/src/rustdoc/extract.rs

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ fn moddoc_from_mod(
4545
desc: none,
4646
items: vec::filter_map(module.items) {|item|
4747
alt item.node {
48+
ast::item_mod(m) {
49+
some(doc::modtag(
50+
moddoc_from_mod(m, item.ident, item.id)
51+
))
52+
}
4853
ast::item_fn(decl, _, _) {
4954
some(doc::fntag(
5055
fndoc_from_fn(decl, item.ident, item.id)
@@ -69,18 +74,7 @@ fn moddoc_from_mod(
6974
none
7075
}
7176
}
72-
},
73-
mods: doc::modlist(
74-
vec::filter_map(module.items) {|item|
75-
alt item.node {
76-
ast::item_mod(m) {
77-
some(moddoc_from_mod(m, item.ident, item.id))
78-
}
79-
_ {
80-
none
81-
}
82-
}
83-
})
77+
}
8478
}
8579
}
8680

@@ -233,8 +227,7 @@ mod tests {
233227
let source = ""; // empty crate
234228
let ast = parse::from_str(source);
235229
let doc = extract(ast, "");
236-
// FIXME #1535: These are boxed to prevent a crash
237-
assert ~doc.topmod.mods == ~doc::modlist([]);
230+
assert vec::is_empty(doc.topmod.mods());
238231
assert vec::is_empty(doc.topmod.fns());
239232
}
240233

@@ -243,25 +236,25 @@ mod tests {
243236
let source = "mod a { mod b { } mod c { } }";
244237
let ast = parse::from_str(source);
245238
let doc = extract(ast, "");
246-
assert doc.topmod.mods[0].name == "a";
247-
assert doc.topmod.mods[0].mods[0].name == "b";
248-
assert doc.topmod.mods[0].mods[1].name == "c";
239+
assert doc.topmod.mods()[0].name == "a";
240+
assert doc.topmod.mods()[0].mods()[0].name == "b";
241+
assert doc.topmod.mods()[0].mods()[1].name == "c";
249242
}
250243

251244
#[test]
252245
fn extract_mods_deep() {
253246
let source = "mod a { mod b { mod c { } } }";
254247
let ast = parse::from_str(source);
255248
let doc = extract(ast, "");
256-
assert doc.topmod.mods[0].mods[0].mods[0].name == "c";
249+
assert doc.topmod.mods()[0].mods()[0].mods()[0].name == "c";
257250
}
258251

259252
#[test]
260253
fn extract_should_set_mod_ast_id() {
261254
let source = "mod a { }";
262255
let ast = parse::from_str(source);
263256
let doc = extract(ast, "");
264-
assert doc.topmod.mods[0].id != 0;
257+
assert doc.topmod.mods()[0].id != 0;
265258
}
266259

267260
#[test]
@@ -272,7 +265,7 @@ mod tests {
272265
let ast = parse::from_str(source);
273266
let doc = extract(ast, "");
274267
assert doc.topmod.fns()[0].name == "a";
275-
assert doc.topmod.mods[0].fns()[0].name == "c";
268+
assert doc.topmod.mods()[0].fns()[0].name == "c";
276269
}
277270

278271
#[test]

branches/snap-stage3/src/rustdoc/fold.rs

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import std;
33

44
export fold;
5-
export fold_crate, fold_mod, fold_fn, fold_modlist;
5+
export fold_crate, fold_mod, fold_fn;
66
export default_seq_fold;
77
export default_seq_fold_crate;
88
export default_seq_fold_mod;
@@ -19,7 +19,6 @@ type fold_fn<T> = fn~(fold: fold<T>, doc: doc::fndoc) -> doc::fndoc;
1919
type fold_const<T> = fn~(fold: fold<T>, doc: doc::constdoc) -> doc::constdoc;
2020
type fold_enum<T> = fn~(fold: fold<T>, doc: doc::enumdoc) -> doc::enumdoc;
2121
type fold_res<T> = fn~(fold: fold<T>, doc: doc::resdoc) -> doc::resdoc;
22-
type fold_modlist<T> = fn~(fold: fold<T>, list: doc::modlist) -> doc::modlist;
2322

2423
type t<T> = {
2524
ctxt: T,
@@ -28,8 +27,7 @@ type t<T> = {
2827
fold_fn: fold_fn<T>,
2928
fold_const: fold_const<T>,
3029
fold_enum: fold_enum<T>,
31-
fold_res: fold_res<T>,
32-
fold_modlist: fold_modlist<T>
30+
fold_res: fold_res<T>
3331
};
3432

3533

@@ -42,8 +40,7 @@ fn mk_fold<T:copy>(
4240
fold_fn: fold_fn<T>,
4341
fold_const: fold_const<T>,
4442
fold_enum: fold_enum<T>,
45-
fold_res: fold_res<T>,
46-
fold_modlist: fold_modlist<T>
43+
fold_res: fold_res<T>
4744
) -> fold<T> {
4845
fold({
4946
ctxt: ctxt,
@@ -52,8 +49,7 @@ fn mk_fold<T:copy>(
5249
fold_fn: fold_fn,
5350
fold_const: fold_const,
5451
fold_enum: fold_enum,
55-
fold_res: fold_res,
56-
fold_modlist: fold_modlist
52+
fold_res: fold_res
5753
})
5854
}
5955

@@ -65,8 +61,7 @@ fn default_seq_fold<T:copy>(ctxt: T) -> fold<T> {
6561
{|f, d| default_seq_fold_fn(f, d)},
6662
{|f, d| default_seq_fold_const(f, d)},
6763
{|f, d| default_seq_fold_enum(f, d)},
68-
{|f, d| default_seq_fold_res(f, d)},
69-
{|f, d| default_seq_fold_modlist(f, d)}
64+
{|f, d| default_seq_fold_res(f, d)}
7065
)
7166
}
7267

@@ -86,6 +81,9 @@ fn default_seq_fold_mod<T>(
8681
~{
8782
items: vec::map(doc.items) {|itemtag|
8883
alt itemtag {
84+
doc::modtag(moddoc) {
85+
doc::modtag(fold.fold_mod(fold, moddoc))
86+
}
8987
doc::fntag(fndoc) {
9088
doc::fntag(fold.fold_fn(fold, fndoc))
9189
}
@@ -99,8 +97,7 @@ fn default_seq_fold_mod<T>(
9997
doc::restag(fold.fold_res(fold, resdoc))
10098
}
10199
}
102-
},
103-
mods: fold.fold_modlist(fold, doc.mods)
100+
}
104101
with *doc
105102
}
106103
}
@@ -133,15 +130,6 @@ fn default_seq_fold_res<T>(
133130
doc
134131
}
135132

136-
fn default_seq_fold_modlist<T>(
137-
fold: fold<T>,
138-
list: doc::modlist
139-
) -> doc::modlist {
140-
doc::modlist(vec::map(*list) {|doc|
141-
fold.fold_mod(fold, doc)
142-
})
143-
}
144-
145133
#[test]
146134
fn default_fold_should_produce_same_doc() {
147135
let source = "mod a { fn b() { } mod c { fn d() { } } }";

branches/snap-stage3/src/rustdoc/markdown_pass.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,9 @@ fn write_mod_contents(
8181
write_brief(ctxt, doc.brief);
8282
write_desc(ctxt, doc.desc);
8383

84-
for moddoc in *doc.mods {
85-
write_mod(ctxt, moddoc);
86-
}
87-
8884
for itemtag in doc.items {
8985
alt itemtag {
86+
doc::modtag(moddoc) { write_mod(ctxt, moddoc) }
9087
doc::fntag(fndoc) { write_fn(ctxt, fndoc) }
9188
doc::consttag(constdoc) { write_const(ctxt, constdoc) }
9289
doc::enumtag(enumdoc) { write_enum(ctxt, enumdoc) }

branches/snap-stage3/src/rustdoc/path_pass.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,6 @@ fn should_record_mod_paths() {
4444
let srv = astsrv::mk_srv_from_str(source);
4545
let doc = extract::from_srv(srv, "");
4646
let doc = run(srv, doc);
47-
assert doc.topmod.mods[0].mods[0].mods[0].path == ["a", "b"];
48-
assert doc.topmod.mods[0].mods[1].mods[0].path == ["a", "d"];
47+
assert doc.topmod.mods()[0].mods()[0].mods()[0].path == ["a", "b"];
48+
assert doc.topmod.mods()[0].mods()[1].mods()[0].path == ["a", "d"];
4949
}

branches/snap-stage3/src/rustdoc/prune_undoc_pass.rs

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ fn run(
2222
fold_fn: fold_fn,
2323
fold_const: fold_const,
2424
fold_enum: fold_enum,
25-
fold_res: fold_res,
26-
fold_modlist: fold_modlist
25+
fold_res: fold_res
2726
with *fold::default_seq_fold(ctxt)
2827
});
2928
fold.fold_crate(fold, doc)
@@ -36,6 +35,14 @@ fn fold_mod(
3635
let doc = ~{
3736
items: vec::filter_map(doc.items) {|itemtag|
3837
alt itemtag {
38+
doc::modtag(moddoc) {
39+
let doc = fold.fold_mod(fold, moddoc);
40+
if fold.ctxt.have_docs {
41+
some(doc::modtag(doc))
42+
} else {
43+
none
44+
}
45+
}
3946
doc::fntag(fndoc) {
4047
let doc = fold.fold_fn(fold, fndoc);
4148
if fold.ctxt.have_docs {
@@ -76,7 +83,6 @@ fn fold_mod(
7683
fold.ctxt.have_docs =
7784
doc.brief != none
7885
|| doc.desc != none
79-
|| vec::is_not_empty(*doc.mods)
8086
|| vec::is_not_empty(doc.items);
8187
ret doc;
8288
}
@@ -156,27 +162,13 @@ fn should_not_elide_fns_with_documented_failure_conditions() {
156162
assert vec::is_not_empty(doc.topmod.fns());
157163
}
158164

159-
fn fold_modlist(
160-
fold: fold::fold<ctxt>,
161-
list: doc::modlist
162-
) -> doc::modlist {
163-
doc::modlist(vec::filter_map(*list) {|doc|
164-
let doc = fold.fold_mod(fold, doc);
165-
if fold.ctxt.have_docs {
166-
some(doc)
167-
} else {
168-
none
169-
}
170-
})
171-
}
172-
173165
#[test]
174166
fn should_elide_undocumented_mods() {
175167
let source = "mod a { }";
176168
let srv = astsrv::mk_srv_from_str(source);
177169
let doc = extract::from_srv(srv, "");
178170
let doc = run(srv, doc);
179-
assert vec::is_empty(*doc.topmod.mods);
171+
assert vec::is_empty(doc.topmod.mods());
180172
}
181173

182174
#[test]
@@ -186,7 +178,7 @@ fn should_not_elide_undocument_mods_with_documented_mods() {
186178
let doc = extract::from_srv(srv, "");
187179
let doc = attr_pass::mk_pass()(srv, doc);
188180
let doc = run(srv, doc);
189-
assert vec::is_not_empty(*doc.topmod.mods);
181+
assert vec::is_not_empty(doc.topmod.mods());
190182
}
191183

192184
#[test]
@@ -196,7 +188,7 @@ fn should_not_elide_undocument_mods_with_documented_fns() {
196188
let doc = extract::from_srv(srv, "");
197189
let doc = attr_pass::mk_pass()(srv, doc);
198190
let doc = run(srv, doc);
199-
assert vec::is_not_empty(*doc.topmod.mods);
191+
assert vec::is_not_empty(doc.topmod.mods());
200192
}
201193

202194
#[test]

0 commit comments

Comments
 (0)