@@ -60,6 +60,18 @@ fn should_replace_top_module_name_with_crate_name() {
60
60
assert doc. topmod . name == "bond" ;
61
61
}
62
62
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
+
63
75
fn fold_mod ( fold : fold:: fold < astsrv:: srv > , doc : doc:: moddoc ) -> doc:: moddoc {
64
76
let srv = fold. ctxt ;
65
77
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 {
68
80
attr_parser:: parse_mod ( ctxt. ast . node . attrs )
69
81
}
70
82
} 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)
77
84
} ;
78
85
let doc = fold:: default_seq_fold_mod ( fold, doc) ;
79
86
ret merge_mod_attrs ( doc, attrs) ;
@@ -117,12 +124,7 @@ fn fold_fn(
117
124
118
125
let srv = fold. ctxt ;
119
126
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) ;
126
128
ret merge_fn_attrs ( doc, attrs) ;
127
129
128
130
fn merge_fn_attrs (
@@ -216,12 +218,7 @@ fn fold_const(
216
218
doc : doc:: constdoc
217
219
) -> doc:: constdoc {
218
220
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) ;
225
222
226
223
~{
227
224
brief: attrs. brief ,
0 commit comments