diff --git a/clippy_lints/src/redundant_clone.rs b/clippy_lints/src/redundant_clone.rs index 8ad8e45a2dbfe..ca0d6ace03f57 100644 --- a/clippy_lints/src/redundant_clone.rs +++ b/clippy_lints/src/redundant_clone.rs @@ -81,6 +81,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for RedundantClone { ) { let def_id = cx.tcx.hir().body_owner_def_id(body.id()); let mir = cx.tcx.optimized_mir(def_id); + let mir_read_only = mir.unwrap_read_only(); let dead_unwinds = BitSet::new_empty(mir.basic_blocks().len()); let maybe_storage_live_result = do_dataflow( @@ -94,7 +95,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for RedundantClone { ); let mut possible_borrower = { let mut vis = PossibleBorrowerVisitor::new(cx, mir); - vis.visit_body(mir); + vis.visit_body(mir_read_only); vis.into_map(cx, maybe_storage_live_result) }; @@ -146,7 +147,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for RedundantClone { // `arg` is a reference as it is `.deref()`ed in the previous block. // Look into the predecessor block and find out the source of deref. - let ps = mir.predecessors_for(bb); + let ps = mir_read_only.predecessors_for(bb); if ps.len() != 1 { continue; } diff --git a/tests/ui/custom_ice_message.rs b/tests/ui/custom_ice_message.rs index 2f58fbce30bfd..5b30c9d5721ca 100644 --- a/tests/ui/custom_ice_message.rs +++ b/tests/ui/custom_ice_message.rs @@ -1,6 +1,7 @@ // rustc-env:RUST_BACKTRACE=0 // normalize-stderr-test: "Clippy version: .*" -> "Clippy version: foo" // normalize-stderr-test: "internal_lints.rs:\d*:\d*" -> "internal_lints.rs" +// normalize-stderr-test: "', .*clippy_lints" -> "', clippy_lints" #![deny(clippy::internal)]