12
12
use std:: option;
13
13
use syntax:: { ast, fold, attr} ;
14
14
15
- type in_cfg_pred = @fn ( attrs : ~ [ ast:: attribute ] ) -> bool ;
15
+ type in_cfg_pred = @fn ( attrs : & [ ast:: attribute ] ) -> bool ;
16
16
17
17
struct Context {
18
18
in_cfg : in_cfg_pred
@@ -50,8 +50,7 @@ fn filter_item(cx: @Context, item: @ast::item) ->
50
50
if item_in_cfg ( cx, item) { option:: Some ( item) } else { option:: None }
51
51
}
52
52
53
- fn filter_view_item ( cx : @Context , view_item : @ast:: view_item
54
- ) -> Option < @ast:: view_item > {
53
+ fn filter_view_item < ' r > ( cx : @Context , view_item : & ' r ast:: view_item ) -> Option < & ' r ast:: view_item > {
55
54
if view_item_in_cfg ( cx, view_item) {
56
55
option:: Some ( view_item)
57
56
} else {
@@ -64,7 +63,7 @@ fn fold_mod(cx: @Context, m: &ast::_mod, fld: @fold::ast_fold) -> ast::_mod {
64
63
filter_item ( cx, * a) . chain ( |x| fld. fold_item ( x) )
65
64
} . collect ( ) ;
66
65
let filtered_view_items = do m. view_items . iter ( ) . filter_map |a| {
67
- filter_view_item ( cx, * a) . map ( |x| fld. fold_view_item ( * x) )
66
+ filter_view_item ( cx, a) . map ( |& x| fld. fold_view_item ( x) )
68
67
} . collect ( ) ;
69
68
ast:: _mod {
70
69
view_items : filtered_view_items,
@@ -86,7 +85,7 @@ fn fold_foreign_mod(
86
85
) -> ast:: foreign_mod {
87
86
let filtered_items = nm. items . iter ( ) . filter_map ( |a| filter_foreign_item ( cx, * a) ) . collect ( ) ;
88
87
let filtered_view_items = do nm. view_items . iter ( ) . filter_map |a| {
89
- filter_view_item ( cx, * a) . map ( |x| fld. fold_view_item ( * x) )
88
+ filter_view_item ( cx, a) . map ( |& x| fld. fold_view_item ( x) )
90
89
} . collect ( ) ;
91
90
ast:: foreign_mod {
92
91
sort : nm. sort ,
@@ -99,10 +98,10 @@ fn fold_foreign_mod(
99
98
fn fold_item_underscore ( cx : @Context , item : & ast:: item_ ,
100
99
fld : @fold:: ast_fold ) -> ast:: item_ {
101
100
let item = match * item {
102
- ast:: item_impl( ref a, b , c, ref methods) => {
101
+ ast:: item_impl( ref a, ref b , ref c, ref methods) => {
103
102
let methods = methods. iter ( ) . filter ( |m| method_in_cfg ( cx, * * m) )
104
103
. transform ( |x| * x) . collect ( ) ;
105
- ast:: item_impl ( /*bad*/ copy * a, b, c, methods)
104
+ ast:: item_impl ( /*bad*/ copy * a, /*bad*/ copy * b, /*bad*/ copy * c, methods)
106
105
}
107
106
ast:: item_trait( ref a, ref b, ref methods) => {
108
107
let methods = methods. iter ( ) . filter ( |m| trait_method_in_cfg ( cx, * m) )
@@ -141,7 +140,7 @@ fn fold_block(
141
140
filter_stmt ( cx, * a) . chain ( |stmt| fld. fold_stmt ( stmt) )
142
141
} . collect ( ) ;
143
142
let filtered_view_items = do b. view_items . iter ( ) . filter_map |a| {
144
- filter_view_item ( cx, * a) . map ( |x| fld. fold_view_item ( * x) )
143
+ filter_view_item ( cx, a) . map ( |& x| fld. fold_view_item ( x) )
145
144
} . collect ( ) ;
146
145
ast:: blk_ {
147
146
view_items : filtered_view_items,
@@ -160,8 +159,8 @@ fn foreign_item_in_cfg(cx: @Context, item: @ast::foreign_item) -> bool {
160
159
return ( cx. in_cfg ) ( /*bad*/ copy item. attrs ) ;
161
160
}
162
161
163
- fn view_item_in_cfg ( cx : @Context , item : @ ast:: view_item ) -> bool {
164
- return ( cx. in_cfg ) ( /*bad*/ copy item. attrs ) ;
162
+ fn view_item_in_cfg ( cx : @Context , item : & ast:: view_item ) -> bool {
163
+ return ( cx. in_cfg ) ( item. attrs ) ;
165
164
}
166
165
167
166
fn method_in_cfg ( cx : @Context , meth : @ast:: method ) -> bool {
0 commit comments