Skip to content

Commit cab0f6c

Browse files
committed
---
yaml --- r: 13807 b: refs/heads/try c: 95a006c h: refs/heads/master i: 13805: 08a75e8 13803: 8087f6a 13799: d5922f5 13791: 3f6d19b v: v3
1 parent c35320c commit cab0f6c

File tree

2 files changed

+60
-2
lines changed

2 files changed

+60
-2
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
refs/heads/master: 61b1875c16de39c166b0f4d54bba19f9c6777d1a
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
5-
refs/heads/try: a25bc195e25fcce97301b907e2a03501daafb9b9
5+
refs/heads/try: 95a006ce520c838fb1368471bcfba3042e176400
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

branches/try/src/rustdoc/attr_pass.rs

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ fn run(
2323
fold_crate: fold_crate,
2424
fold_mod: fold_mod,
2525
fold_fn: fold_fn,
26-
fold_const: fold_const
26+
fold_const: fold_const,
27+
fold_enum: fold_enum
2728
with *fold::default_seq_fold(srv)
2829
});
2930
fold.fold_crate(fold, doc)
@@ -249,3 +250,60 @@ fn fold_const_should_extract_docs() {
249250
assert doc.brief == some("foo");
250251
assert doc.desc == some("bar");
251252
}
253+
254+
fn fold_enum(
255+
fold: fold::fold<astsrv::srv>,
256+
doc: doc::enumdoc
257+
) -> doc::enumdoc {
258+
let srv = fold.ctxt;
259+
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_enum);
260+
261+
~{
262+
brief: attrs.brief,
263+
desc: attrs.desc,
264+
variants: vec::map(doc.variants) {|variant|
265+
let attrs = astsrv::exec(srv) {|ctxt|
266+
alt ctxt.map.get(doc.id) {
267+
ast_map::node_item(@{
268+
node: ast::item_enum(ast_variants, _), _
269+
}) {
270+
let ast_variant = option::get(
271+
vec::find(ast_variants) {|v|
272+
v.node.name == variant.name
273+
});
274+
275+
attr_parser::parse_variant(ast_variant.node.attrs)
276+
}
277+
}
278+
};
279+
280+
~{
281+
desc: attrs.desc
282+
with *variant
283+
}
284+
}
285+
with *doc
286+
}
287+
}
288+
289+
#[test]
290+
fn fold_enum_should_extract_docs() {
291+
let source = "#[doc(brief = \"a\", desc = \"b\")]\
292+
enum a { v }";
293+
let srv = astsrv::mk_srv_from_str(source);
294+
let doc = extract::from_srv(srv, "");
295+
let fold = fold::default_seq_fold(srv);
296+
let doc = fold_enum(fold, doc.topmod.enums[0]);
297+
assert doc.brief == some("a");
298+
assert doc.desc == some("b");
299+
}
300+
301+
#[test]
302+
fn fold_enum_should_extract_variant_docs() {
303+
let source = "enum a { #[doc = \"c\"] v }";
304+
let srv = astsrv::mk_srv_from_str(source);
305+
let doc = extract::from_srv(srv, "");
306+
let fold = fold::default_seq_fold(srv);
307+
let doc = fold_enum(fold, doc.topmod.enums[0]);
308+
assert doc.variants[0].desc == some("c");
309+
}

0 commit comments

Comments
 (0)