]> git.lizzy.rs Git - rust.git/commitdiff
Use BasicBlockData::terminator
authorShotaro Yamada <sinkuu@sinkuu.xyz>
Thu, 25 Oct 2018 16:27:28 +0000 (01:27 +0900)
committerShotaro Yamada <sinkuu@sinkuu.xyz>
Thu, 25 Oct 2018 16:27:28 +0000 (01:27 +0900)
clippy_lints/src/redundant_clone.rs

index 85f8b525677be506f9cde1d34bd72971facaa06b..85f7bbb637ca4f6c256f3f70ec1b999d5f6ed197 100644 (file)
@@ -97,7 +97,7 @@ fn check_fn(
         let mir = cx.tcx.optimized_mir(def_id);
 
         for (bb, bbdata) in mir.basic_blocks().iter_enumerated() {
-            let terminator = unwrap_or_continue!(&bbdata.terminator);
+            let terminator = bbdata.terminator();
 
             // Give up on loops
             if terminator.successors().any(|s| *s == bb) {
@@ -130,7 +130,7 @@ fn check_fn(
                 if ps.len() != 1 {
                     continue;
                 }
-                let pred_terminator = unwrap_or_continue!(&mir[ps[0]].terminator);
+                let pred_terminator = mir[ps[0]].terminator();
 
                 let pred_arg = if_chain! {
                     if let Some((pred_fn_def_id, pred_arg, pred_arg_ty, Some(res))) =
@@ -152,11 +152,9 @@ fn check_fn(
             };
 
             let used_later = traversal::ReversePostorder::new(&mir, bb).skip(1).any(|(tbb, tdata)| {
-                if let Some(term) = &tdata.terminator {
-                    // Give up on loops
-                    if term.successors().any(|s| *s == bb) {
-                        return true;
-                    }
+                // Give up on loops
+                if tdata.terminator().successors().any(|s| *s == bb) {
+                    return true;
                 }
 
                 let mut vis = LocalUseVisitor {
@@ -256,12 +254,7 @@ struct LocalUseVisitor {
 
 impl<'tcx> mir::visit::Visitor<'tcx> for LocalUseVisitor {
     fn visit_basic_block_data(&mut self, block: mir::BasicBlock, data: &mir::BasicBlockData<'tcx>) {
-        let mir::BasicBlockData {
-            statements,
-            terminator,
-            is_cleanup: _,
-        } = data;
-
+        let statements = &data.statements;
         for (statement_index, statement) in statements.iter().enumerate() {
             self.visit_statement(block, statement, mir::Location { block, statement_index });
 
@@ -271,16 +264,14 @@ fn visit_basic_block_data(&mut self, block: mir::BasicBlock, data: &mir::BasicBl
             }
         }
 
-        if let Some(terminator) = terminator {
-            self.visit_terminator(
+        self.visit_terminator(
+            block,
+            data.terminator(),
+            mir::Location {
                 block,
-                terminator,
-                mir::Location {
-                    block,
-                    statement_index: statements.len(),
-                },
-            );
-        }
+                statement_index: statements.len(),
+            },
+        );
     }
 
     fn visit_local(&mut self, local: &mir::Local, ctx: PlaceContext<'tcx>, _: mir::Location) {