@@ -48,14 +48,6 @@ pub fn strip_items(crate: ast::Crate,
48
48
ctxt. fold_crate ( crate )
49
49
}
50
50
51
- fn filter_item ( cx : & Context , item : @ast:: item ) -> Option < @ast:: item > {
52
- if item_in_cfg ( cx, item) {
53
- Some ( item)
54
- } else {
55
- None
56
- }
57
- }
58
-
59
51
fn filter_view_item < ' r > ( cx : & Context , view_item : & ' r ast:: view_item )
60
52
-> Option < & ' r ast:: view_item > {
61
53
if view_item_in_cfg ( cx, view_item) {
@@ -66,9 +58,10 @@ fn filter_view_item<'r>(cx: &Context, view_item: &'r ast::view_item)
66
58
}
67
59
68
60
fn fold_mod ( cx : & Context , m : & ast:: _mod ) -> ast:: _mod {
69
- let filtered_items = m. items . iter ( ) . filter_map ( |a| {
70
- filter_item ( cx, * a) . and_then ( |x| cx. fold_item ( x) )
71
- } ) . collect ( ) ;
61
+ let filtered_items = m. items . iter ( )
62
+ . filter ( |& a| item_in_cfg ( cx, * a) )
63
+ . flat_map ( |& x| cx. fold_item ( x) . move_iter ( ) )
64
+ . collect ( ) ;
72
65
let filtered_view_items = m. view_items . iter ( ) . filter_map ( |a| {
73
66
filter_view_item ( cx, a) . map ( |x| cx. fold_view_item ( x) )
74
67
} ) . collect ( ) ;
@@ -122,28 +115,25 @@ fn fold_item_underscore(cx: &Context, item: &ast::item_) -> ast::item_ {
122
115
fold:: noop_fold_item_underscore ( & item, cx)
123
116
}
124
117
125
- fn filter_stmt ( cx : & Context , stmt : @ast:: Stmt ) -> Option < @ast :: Stmt > {
118
+ fn retain_stmt ( cx : & Context , stmt : @ast:: Stmt ) -> bool {
126
119
match stmt. node {
127
120
ast:: StmtDecl ( decl, _) => {
128
121
match decl. node {
129
122
ast:: DeclItem ( item) => {
130
- if item_in_cfg ( cx, item) {
131
- Some ( stmt)
132
- } else {
133
- None
134
- }
123
+ item_in_cfg ( cx, item)
135
124
}
136
- _ => Some ( stmt )
125
+ _ => true
137
126
}
138
127
}
139
- _ => Some ( stmt ) ,
128
+ _ => true
140
129
}
141
130
}
142
131
143
132
fn fold_block ( cx : & Context , b : & ast:: Block ) -> ast:: Block {
144
- let resulting_stmts = b. stmts . iter ( ) . filter_map ( |a| {
145
- filter_stmt ( cx, * a) . and_then ( |stmt| cx. fold_stmt ( stmt) )
146
- } ) . collect ( ) ;
133
+ let resulting_stmts = b. stmts . iter ( )
134
+ . filter ( |& a| retain_stmt ( cx, * a) )
135
+ . flat_map ( |& stmt| cx. fold_stmt ( stmt) . move_iter ( ) )
136
+ . collect ( ) ;
147
137
let filtered_view_items = b. view_items . iter ( ) . filter_map ( |a| {
148
138
filter_view_item ( cx, a) . map ( |x| cx. fold_view_item ( x) )
149
139
} ) . collect ( ) ;
0 commit comments