Skip to content

Commit d9d895e

Browse files
committed
---
yaml --- r: 7859 b: refs/heads/snap-stage3 c: 06ab83d h: refs/heads/master i: 7857: 059a4e6 7855: 5dff7ac v: v3
1 parent 7ae8394 commit d9d895e

File tree

3 files changed

+68
-2
lines changed

3 files changed

+68
-2
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: ce7d1504934ce27560dbb54ece342c2443469468
4+
refs/heads/snap-stage3: 06ab83de2c72ebaf87b33133007a0dd0e79962db
55
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export default_seq_fold_mod;
99
export default_seq_fold_fn;
1010
export default_seq_fold_const;
1111
export default_seq_fold_enum;
12+
export default_seq_fold_res;
1213
export default_seq_fold_fnlist;
1314

1415
enum fold<T> = t<T>;

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

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ fn run(
2222
fold_fn: fold_fn,
2323
fold_const: fold_const,
2424
fold_enum: fold_enum,
25+
fold_res: fold_res,
2526
fold_modlist: fold_modlist,
2627
fold_fnlist: fold_fnlist,
2728
fold_constlist: fold_constlist,
28-
fold_enumlist: fold_enumlist
29+
fold_enumlist: fold_enumlist,
30+
fold_reslist: fold_reslist
2931
with *fold::default_seq_fold(ctxt)
3032
});
3133
fold.fold_crate(fold, doc)
@@ -280,3 +282,66 @@ fn should_not_elide_enums_with_documented_variants() {
280282
let doc = run(srv, doc);
281283
assert vec::is_not_empty(*doc.topmod.enums);
282284
}
285+
286+
fn fold_res(fold: fold::fold<ctxt>, doc: doc::resdoc) -> doc::resdoc {
287+
let doc = ~{
288+
args: vec::filter_map(doc.args) {|arg|
289+
if arg.desc != none {
290+
some(arg)
291+
} else {
292+
none
293+
}
294+
}
295+
with *fold::default_seq_fold_res(fold, doc)
296+
};
297+
fold.ctxt.have_docs =
298+
doc.brief != none
299+
|| doc.desc != none
300+
|| vec::is_not_empty(doc.args);
301+
ret doc;
302+
}
303+
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+
318+
#[test]
319+
fn should_elide_undocumented_resources() {
320+
let source = "resource r(a: bool) { }";
321+
let srv = astsrv::mk_srv_from_str(source);
322+
let doc = extract::from_srv(srv, "");
323+
let doc = run(srv, doc);
324+
assert vec::is_empty(*doc.topmod.resources);
325+
}
326+
327+
#[test]
328+
fn should_elide_undocumented_resource_args() {
329+
let source = "#[doc = \"drunk\"]\
330+
resource r(a: bool) { }";
331+
let srv = astsrv::mk_srv_from_str(source);
332+
let doc = extract::from_srv(srv, "");
333+
let doc = attr_pass::mk_pass()(srv, doc);
334+
let doc = run(srv, doc);
335+
assert vec::is_empty(doc.topmod.resources[0].args);
336+
}
337+
338+
#[test]
339+
fn should_not_elide_resources_with_documented_args() {
340+
let source = "#[doc(args(a = \"drunk\"))]\
341+
resource r(a: bool) { }";
342+
let srv = astsrv::mk_srv_from_str(source);
343+
let doc = extract::from_srv(srv, "");
344+
let doc = attr_pass::mk_pass()(srv, doc);
345+
let doc = run(srv, doc);
346+
assert vec::is_not_empty(*doc.topmod.resources);
347+
}

0 commit comments

Comments
 (0)