about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2012-07-09 14:38:37 -0700
committerGraydon Hoare <graydon@mozilla.com>2012-07-09 14:38:37 -0700
commitf210deae3d522281ca3d85cb6f82dca742abd6e7 (patch)
treeb3ce5fa032079f87e80ba9069b783a05441ebf33 /src
parentc26d02557e77ef02bf897563a38867ff0da3fc2a (diff)
parentf72487d19604225a24b1aeb4580e7abe6cc42cc5 (diff)
Merge branch 'incoming' of github.com:/mozilla/rust into incoming
Conflicts:
	src/snapshots.txt
Diffstat (limited to 'src')
-rw-r--r--src/rustc/front/config.rs30
-rw-r--r--src/test/run-pass/class-impl-parameterized-iface.rs1
-rw-r--r--src/test/run-pass/class-impl-very-parameterized-iface.rs1
-rw-r--r--src/test/run-pass/class-poly-methods-cross-crate.rs1
-rw-r--r--src/test/run-pass/conditional-compile.rs10
5 files changed, 36 insertions, 7 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 {
diff --git a/src/test/run-pass/class-impl-parameterized-iface.rs b/src/test/run-pass/class-impl-parameterized-iface.rs
index 800e42a750b..eb9422a7c7c 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 @@ class cat : map<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 687efb5ead5..8d710d0e6b4 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 @@ class cat<T: copy> : map<int, T> {
   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 1703ad035c8..d02bfbf7091 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 d1510e8de47..8e99ca0da12 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