diff options
| author | Graydon Hoare <graydon@mozilla.com> | 2012-07-09 14:38:37 -0700 |
|---|---|---|
| committer | Graydon Hoare <graydon@mozilla.com> | 2012-07-09 14:38:37 -0700 |
| commit | f210deae3d522281ca3d85cb6f82dca742abd6e7 (patch) | |
| tree | b3ce5fa032079f87e80ba9069b783a05441ebf33 /src/rustc | |
| parent | c26d02557e77ef02bf897563a38867ff0da3fc2a (diff) | |
| parent | f72487d19604225a24b1aeb4580e7abe6cc42cc5 (diff) | |
Merge branch 'incoming' of github.com:/mozilla/rust into incoming
Conflicts: src/snapshots.txt
Diffstat (limited to 'src/rustc')
| -rw-r--r-- | src/rustc/front/config.rs | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/src/rustc/front/config.rs b/src/rustc/front/config.rs index 9db9147ecaf..a5e8f54ad65 100644 --- a/src/rustc/front/config.rs +++ b/src/rustc/front/config.rs @@ -39,11 +39,22 @@ fn filter_item(cx: ctxt, &&item: @ast::item) -> if item_in_cfg(cx, item) { option::some(item) } else { option::none } } +fn filter_view_item(cx: ctxt, &&view_item: @ast::view_item + )-> option<@ast::view_item> { + if view_item_in_cfg(cx, view_item) { + option::some(view_item) + } else { + option::none + } +} + fn fold_mod(cx: ctxt, m: ast::_mod, fld: fold::ast_fold) -> ast::_mod { - let filter = |a| filter_item(cx, a); - let filtered_items = vec::filter_map(m.items, filter); - ret {view_items: vec::map(m.view_items, fld.fold_view_item), + let item_filter = |a| filter_item(cx, a); + let filtered_items = vec::filter_map(m.items, item_filter); + let view_item_filter = |a| filter_view_item(cx, a); + let filtered_view_items = vec::filter_map(m.view_items, view_item_filter); + ret {view_items: vec::map(filtered_view_items, fld.fold_view_item), items: vec::map(filtered_items, fld.fold_item)}; } @@ -56,9 +67,12 @@ fn filter_foreign_item(cx: ctxt, &&item: @ast::foreign_item) -> fn fold_foreign_mod(cx: ctxt, nm: ast::foreign_mod, fld: fold::ast_fold) -> ast::foreign_mod { - let filter = |a| filter_foreign_item(cx, a); - let filtered_items = vec::filter_map(nm.items, filter); - ret {view_items: vec::map(nm.view_items, fld.fold_view_item), + let item_filter = |a| filter_foreign_item(cx, a); + let filtered_items = vec::filter_map(nm.items, item_filter); + let view_item_filter = |a| filter_view_item(cx, a); + let filtered_view_items = vec::filter_map( + nm.view_items, view_item_filter); + ret {view_items: vec::map(filtered_view_items, fld.fold_view_item), items: filtered_items}; } @@ -98,6 +112,10 @@ fn foreign_item_in_cfg(cx: ctxt, item: @ast::foreign_item) -> bool { ret cx.in_cfg(item.attrs); } +fn view_item_in_cfg(cx: ctxt, item: @ast::view_item) -> bool { + ret cx.in_cfg(item.attrs); +} + // Determine if an item should be translated in the current crate // configuration based on the item's attributes fn in_cfg(cfg: ast::crate_cfg, attrs: ~[ast::attribute]) -> bool { |
