@@ -39,11 +39,22 @@ fn filter_item(cx: ctxt, &&item: @ast::item) ->
39
39
if item_in_cfg ( cx, item) { option:: some ( item) } else { option:: none }
40
40
}
41
41
42
+ fn filter_view_item ( cx : ctxt , & & view_item: @ast:: view_item
43
+ ) -> option < @ast:: view_item > {
44
+ if view_item_in_cfg ( cx, view_item) {
45
+ option:: some ( view_item)
46
+ } else {
47
+ option:: none
48
+ }
49
+ }
50
+
42
51
fn fold_mod ( cx : ctxt , m : ast:: _mod , fld : fold:: ast_fold ) ->
43
52
ast:: _mod {
44
- let filter = |a| filter_item ( cx, a) ;
45
- let filtered_items = vec:: filter_map ( m. items , filter) ;
46
- ret { view_items : vec:: map ( m. view_items , fld. fold_view_item ) ,
53
+ let item_filter = |a| filter_item ( cx, a) ;
54
+ let filtered_items = vec:: filter_map ( m. items , item_filter) ;
55
+ let view_item_filter = |a| filter_view_item ( cx, a) ;
56
+ let filtered_view_items = vec:: filter_map ( m. view_items , view_item_filter) ;
57
+ ret { view_items : vec:: map ( filtered_view_items, fld. fold_view_item ) ,
47
58
items : vec:: map ( filtered_items, fld. fold_item ) } ;
48
59
}
49
60
@@ -56,9 +67,12 @@ fn filter_foreign_item(cx: ctxt, &&item: @ast::foreign_item) ->
56
67
57
68
fn fold_foreign_mod ( cx : ctxt , nm : ast:: foreign_mod ,
58
69
fld : fold:: ast_fold ) -> ast:: foreign_mod {
59
- let filter = |a| filter_foreign_item ( cx, a) ;
60
- let filtered_items = vec:: filter_map ( nm. items , filter) ;
61
- ret { view_items : vec:: map ( nm. view_items , fld. fold_view_item ) ,
70
+ let item_filter = |a| filter_foreign_item ( cx, a) ;
71
+ let filtered_items = vec:: filter_map ( nm. items , item_filter) ;
72
+ let view_item_filter = |a| filter_view_item ( cx, a) ;
73
+ let filtered_view_items = vec:: filter_map (
74
+ nm. view_items , view_item_filter) ;
75
+ ret { view_items : vec:: map ( filtered_view_items, fld. fold_view_item ) ,
62
76
items : filtered_items} ;
63
77
}
64
78
@@ -98,6 +112,10 @@ fn foreign_item_in_cfg(cx: ctxt, item: @ast::foreign_item) -> bool {
98
112
ret cx. in_cfg ( item. attrs ) ;
99
113
}
100
114
115
+ fn view_item_in_cfg ( cx : ctxt , item : @ast:: view_item ) -> bool {
116
+ ret cx. in_cfg ( item. attrs ) ;
117
+ }
118
+
101
119
// Determine if an item should be translated in the current crate
102
120
// configuration based on the item's attributes
103
121
fn in_cfg ( cfg : ast:: crate_cfg , attrs : ~[ ast:: attribute ] ) -> bool {
0 commit comments