diff --git a/src/librustc/middle/cfg/mod.rs b/src/librustc/middle/cfg/mod.rs index 0e9bd42a23a1..04f86d0a9bad 100644 --- a/src/librustc/middle/cfg/mod.rs +++ b/src/librustc/middle/cfg/mod.rs @@ -51,9 +51,6 @@ impl CFG { } pub fn node_is_reachable(&self, id: ast::NodeId) -> bool { - for node in self.graph.depth_traverse(self.entry) { - if node.id == id { return true } - } - return false; + self.graph.depth_traverse(self.entry).any(|node| node.id == id) } } diff --git a/src/librustc/middle/graph.rs b/src/librustc/middle/graph.rs index 4397f03a6428..3ba72801e2bf 100644 --- a/src/librustc/middle/graph.rs +++ b/src/librustc/middle/graph.rs @@ -313,12 +313,10 @@ pub struct DepthFirstTraversal<'g, N:'g, E:'g> { impl<'g, N, E> Iterator<&'g N> for DepthFirstTraversal<'g, N, E> { fn next(&mut self) -> Option<&'g N> { - while self.stack.len() > 0 { - let idx = self.stack.pop().unwrap(); - if self.visited.contains(&idx.node_id()) { + while let Some(idx) = self.stack.pop() { + if self.visited.insert(idx.node_id()) { continue; } - self.visited.insert(idx.node_id()); self.graph.each_outgoing_edge(idx, |_, e| -> bool { if !self.visited.contains(&e.target().node_id()) { self.stack.push(e.target()); diff --git a/src/librustc_trans/trans/base.rs b/src/librustc_trans/trans/base.rs index 2cfcce2a961a..5b90dec8323b 100644 --- a/src/librustc_trans/trans/base.rs +++ b/src/librustc_trans/trans/base.rs @@ -1468,7 +1468,7 @@ pub fn new_fn_ctxt<'a, 'tcx>(ccx: &'a CrateContext<'a, 'tcx>, let debug_context = debuginfo::create_function_debug_context(ccx, id, param_substs, llfndecl); let (blk_id, cfg) = build_cfg(ccx.tcx(), id); let nested_returns = if let Some(ref cfg) = cfg { - has_nested_returns(ccx.tcx(), cfg, blk_id) + has_nested_returns(ccx.tcx(), cfg, blk_id) } else { false };