rustc: Conditionally compile view items. #2357
This commit is contained in:
parent
3b399afa89
commit
b7a418e194
@ -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 {
|
||||
|
@ -87,3 +87,13 @@ mod test_foreign_items {
|
||||
fn vec_from_buf_shared();
|
||||
}
|
||||
}
|
||||
|
||||
mod test_use_statements {
|
||||
#[cfg(bogus)]
|
||||
use flippity_foo;
|
||||
|
||||
extern mod rustrt {
|
||||
#[cfg(bogus)]
|
||||
use flippity_foo;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user