about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMark-Simulacrum <mark.simulacrum@gmail.com>2016-12-17 08:24:17 -0700
committerMark Simulacrum <mark.simulacrum@gmail.com>2016-12-20 20:03:29 -0700
commit449c6d82a7f5e25cd294fb2e9a49079e91c5284c (patch)
treef664b9cf70754855539cd4c6f27ecf4bb496b58b /src
parentcc1e210ee8eedfa253122f1dd8d78fbde2646e80 (diff)
downloadrust-449c6d82a7f5e25cd294fb2e9a49079e91c5284c.tar.gz
rust-449c6d82a7f5e25cd294fb2e9a49079e91c5284c.zip
Simplify basic_block.rs
Diffstat (limited to 'src')
-rw-r--r--src/librustc_trans/basic_block.rs19
-rw-r--r--src/librustc_trans/lib.rs1
2 files changed, 6 insertions, 14 deletions
diff --git a/src/librustc_trans/basic_block.rs b/src/librustc_trans/basic_block.rs
index 60bd3fb8ef1..50246a1c5b3 100644
--- a/src/librustc_trans/basic_block.rs
+++ b/src/librustc_trans/basic_block.rs
@@ -10,18 +10,15 @@
 
 use llvm;
 use llvm::BasicBlockRef;
-use value::{Users, Value};
-use std::iter::{Filter, Map};
+use value::Value;
 
 #[derive(Copy, Clone)]
 pub struct BasicBlock(pub BasicBlockRef);
 
-pub type Preds = Map<Filter<Users, fn(&Value) -> bool>, fn(Value) -> BasicBlock>;
-
 /// Wrapper for LLVM BasicBlockRef
 impl BasicBlock {
     pub fn get(&self) -> BasicBlockRef {
-        let BasicBlock(v) = *self; v
+        self.0
     }
 
     pub fn as_value(self) -> Value {
@@ -30,16 +27,10 @@ impl BasicBlock {
         }
     }
 
-    pub fn pred_iter(self) -> Preds {
-        fn is_a_terminator_inst(user: &Value) -> bool { user.is_a_terminator_inst() }
-        let is_a_terminator_inst: fn(&Value) -> bool = is_a_terminator_inst;
-
-        fn get_parent(user: Value) -> BasicBlock { user.get_parent().unwrap() }
-        let get_parent: fn(Value) -> BasicBlock = get_parent;
-
+    pub fn pred_iter(self) -> impl Iterator<Item=BasicBlock> {
         self.as_value().user_iter()
-            .filter(is_a_terminator_inst)
-            .map(get_parent)
+            .filter(|user| user.is_a_terminator_inst())
+            .map(|user| user.get_parent().unwrap())
     }
 
     pub fn get_single_predecessor(self) -> Option<BasicBlock> {
diff --git a/src/librustc_trans/lib.rs b/src/librustc_trans/lib.rs
index 572d96eaef2..bd8121e2b9c 100644
--- a/src/librustc_trans/lib.rs
+++ b/src/librustc_trans/lib.rs
@@ -36,6 +36,7 @@
 #![feature(slice_patterns)]
 #![feature(staged_api)]
 #![feature(unicode)]
+#![feature(conservative_impl_trait)]
 
 use rustc::dep_graph::WorkProduct;