diff --git a/src/rustc/front/config.rs b/src/rustc/front/config.rs index 9db9147ecafa8b60cc4283a75d7e227317c59711..a5e8f54ad650f1330a4b42f6c734277435986c84 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 { diff --git a/src/test/run-pass/class-impl-parameterized-iface.rs b/src/test/run-pass/class-impl-parameterized-iface.rs index 800e42a750b8b62d5d3c532194a8cfe59b78ff07..eb9422a7c7c6f1980a09cb9d00a0bc2c0c836624 100644 --- a/src/test/run-pass/class-impl-parameterized-iface.rs +++ b/src/test/run-pass/class-impl-parameterized-iface.rs @@ -60,6 +60,7 @@ fn each_key(&&f: fn(&&int) -> bool) { fn each_value(&&f: fn(&&bool) -> bool) { for self.each |_k, v| { if !f(v) { break; } again;}; } + fn clear() { } } fn main() { diff --git a/src/test/run-pass/class-impl-very-parameterized-iface.rs b/src/test/run-pass/class-impl-very-parameterized-iface.rs index 687efb5ead5fe0b57a28ec6951c0845c7a6c88b9..8d710d0e6b444ca50e3b4508c0db09a550329e13 100644 --- a/src/test/run-pass/class-impl-very-parameterized-iface.rs +++ b/src/test/run-pass/class-impl-very-parameterized-iface.rs @@ -82,6 +82,7 @@ fn each_key(&&f: fn(&&int) -> bool) { fn each_value(&&f: fn(&&T) -> bool) { for self.each |_k, v| { if !f(v) { break; } again;}; } + fn clear() { } } diff --git a/src/test/run-pass/class-poly-methods-cross-crate.rs b/src/test/run-pass/class-poly-methods-cross-crate.rs index 1703ad035c81f020c74d00929f99653e8646ec8b..d02bfbf70915560c1861104ed78dcfe52daa84af 100644 --- a/src/test/run-pass/class-poly-methods-cross-crate.rs +++ b/src/test/run-pass/class-poly-methods-cross-crate.rs @@ -1,4 +1,3 @@ -// xfail-fast // aux-build:cci_class_6.rs use cci_class_6; import cci_class_6::kitties::*; diff --git a/src/test/run-pass/conditional-compile.rs b/src/test/run-pass/conditional-compile.rs index d1510e8de47c71514fcb809d5d224aeb4e65ab8c..8e99ca0da123af5b28cac72fdabd886986d9eaa8 100644 --- a/src/test/run-pass/conditional-compile.rs +++ b/src/test/run-pass/conditional-compile.rs @@ -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; + } +} \ No newline at end of file