Skip to content

Commit e3be8e6

Browse files
committed
rustdoc: Some refactoring in attr_pass
1 parent fbd704e commit e3be8e6

File tree

1 file changed

+15
-18
lines changed

1 file changed

+15
-18
lines changed

src/rustdoc/attr_pass.rs

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,18 @@ fn should_replace_top_module_name_with_crate_name() {
6060
assert doc.topmod.name == "bond";
6161
}
6262

63+
fn parse_item_attrs<T>(
64+
srv: astsrv::srv,
65+
id: doc::ast_id,
66+
parse_attrs: fn~([ast::attribute]) -> T) -> T {
67+
astsrv::exec(srv) {|ctxt|
68+
let attrs = alt ctxt.map.get(id) {
69+
ast_map::node_item(item) { item.attrs }
70+
};
71+
parse_attrs(attrs)
72+
}
73+
}
74+
6375
fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
6476
let srv = fold.ctxt;
6577
let attrs = if doc.id == ast::crate_node_id {
@@ -68,12 +80,7 @@ fn fold_mod(fold: fold::fold<astsrv::srv>, doc: doc::moddoc) -> doc::moddoc {
6880
attr_parser::parse_mod(ctxt.ast.node.attrs)
6981
}
7082
} else {
71-
astsrv::exec(srv) {|ctxt|
72-
let attrs = alt ctxt.map.get(doc.id) {
73-
ast_map::node_item(item) { item.attrs }
74-
};
75-
attr_parser::parse_mod(attrs)
76-
}
83+
parse_item_attrs(srv, doc.id, attr_parser::parse_mod)
7784
};
7885
let doc = fold::default_seq_fold_mod(fold, doc);
7986
ret merge_mod_attrs(doc, attrs);
@@ -117,12 +124,7 @@ fn fold_fn(
117124

118125
let srv = fold.ctxt;
119126

120-
let attrs = astsrv::exec(srv) {|ctxt|
121-
let attrs = alt ctxt.map.get(doc.id) {
122-
ast_map::node_item(item) { item.attrs }
123-
};
124-
attr_parser::parse_fn(attrs)
125-
};
127+
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_fn);
126128
ret merge_fn_attrs(doc, attrs);
127129

128130
fn merge_fn_attrs(
@@ -216,12 +218,7 @@ fn fold_const(
216218
doc: doc::constdoc
217219
) -> doc::constdoc {
218220
let srv = fold.ctxt;
219-
let attrs = astsrv::exec(srv) {|ctxt|
220-
let attrs = alt ctxt.map.get(doc.id) {
221-
ast_map::node_item(item) { item.attrs }
222-
};
223-
attr_parser::parse_mod(attrs)
224-
};
221+
let attrs = parse_item_attrs(srv, doc.id, attr_parser::parse_mod);
225222

226223
~{
227224
brief: attrs.brief,

0 commit comments

Comments
 (0)