@@ -58,16 +58,18 @@ fn filter_view_item<'r>(cx: &Context, view_item: &'r ast::ViewItem)
58
58
}
59
59
60
60
fn fold_mod ( cx : & mut Context , m : & ast:: Mod ) -> ast:: Mod {
61
- let filtered_items = m. items . iter ( )
61
+ let filtered_items: ~ [ & @ast :: Item ] = m. items . iter ( )
62
62
. filter ( |& a| item_in_cfg ( cx, * a) )
63
+ . collect ( ) ;
64
+ let flattened_items = filtered_items. move_iter ( )
63
65
. flat_map ( |& x| cx. fold_item ( x) . move_iter ( ) )
64
66
. collect ( ) ;
65
67
let filtered_view_items = m. view_items . iter ( ) . filter_map ( |a| {
66
68
filter_view_item ( cx, a) . map ( |x| cx. fold_view_item ( x) )
67
69
} ) . collect ( ) ;
68
70
ast:: Mod {
69
71
view_items : filtered_view_items,
70
- items : filtered_items
72
+ items : flattened_items
71
73
}
72
74
}
73
75
@@ -113,23 +115,26 @@ fn fold_item_underscore(cx: &mut Context, item: &ast::Item_) -> ast::Item_ {
113
115
ast:: ItemStruct ( fold_struct ( cx, def) , generics. clone ( ) )
114
116
}
115
117
ast:: ItemEnum ( ref def, ref generics) => {
116
- let mut variants = def. variants . iter ( ) . map ( |c| c. clone ( ) ) . filter ( |m| {
117
- ( cx. in_cfg ) ( m. node . attrs )
118
- } ) . map ( |v| {
119
- match v. node . kind {
120
- ast:: TupleVariantKind ( ..) => v,
121
- ast:: StructVariantKind ( def) => {
122
- let def = fold_struct ( cx, def) ;
123
- @codemap:: Spanned {
124
- node : ast:: Variant_ {
125
- kind : ast:: StructVariantKind ( def) ,
126
- ..v. node . clone ( )
127
- } ,
128
- ..* v
129
- }
118
+ let mut variants = def. variants . iter ( ) . map ( |c| c. clone ( ) ) .
119
+ filter_map ( |v| {
120
+ if !( cx. in_cfg ) ( v. node . attrs ) {
121
+ None
122
+ } else {
123
+ Some ( match v. node . kind {
124
+ ast:: TupleVariantKind ( ..) => v,
125
+ ast:: StructVariantKind ( def) => {
126
+ let def = fold_struct ( cx, def) ;
127
+ @codemap:: Spanned {
128
+ node : ast:: Variant_ {
129
+ kind : ast:: StructVariantKind ( def) ,
130
+ ..v. node . clone ( )
131
+ } ,
132
+ ..* v
133
+ }
134
+ }
135
+ } )
130
136
}
131
- }
132
- } ) ;
137
+ } ) ;
133
138
ast:: ItemEnum ( ast:: EnumDef {
134
139
variants : variants. collect ( ) ,
135
140
} , generics. clone ( ) )
@@ -165,10 +170,11 @@ fn retain_stmt(cx: &Context, stmt: @ast::Stmt) -> bool {
165
170
}
166
171
167
172
fn fold_block ( cx : & mut Context , b : ast:: P < ast:: Block > ) -> ast:: P < ast:: Block > {
168
- let resulting_stmts = b. stmts . iter ( )
169
- . filter ( |& a| retain_stmt ( cx, * a) )
170
- . flat_map ( |& stmt| cx. fold_stmt ( stmt) . move_iter ( ) )
171
- . collect ( ) ;
173
+ let resulting_stmts: ~[ & @ast:: Stmt ] =
174
+ b. stmts . iter ( ) . filter ( |& a| retain_stmt ( cx, * a) ) . collect ( ) ;
175
+ let resulting_stmts = resulting_stmts. move_iter ( )
176
+ . flat_map ( |& stmt| cx. fold_stmt ( stmt) . move_iter ( ) )
177
+ . collect ( ) ;
172
178
let filtered_view_items = b. view_items . iter ( ) . filter_map ( |a| {
173
179
filter_view_item ( cx, a) . map ( |x| cx. fold_view_item ( x) )
174
180
} ) . collect ( ) ;
0 commit comments