From 80822b430dcba0ff1fbb02c16f20c2abcd67802e Mon Sep 17 00:00:00 2001 From: Jason Olson Date: Fri, 13 Sep 2019 18:49:11 -0700 Subject: [PATCH] Convert to Place's new boxed slice projection Fixes breaking change from rust-lang PR https://github.com/rust-lang/rust/pull/63420/ --- clippy_lints/src/redundant_clone.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/clippy_lints/src/redundant_clone.rs b/clippy_lints/src/redundant_clone.rs index 68bf1febc6d6..d029267e034d 100644 --- a/clippy_lints/src/redundant_clone.rs +++ b/clippy_lints/src/redundant_clone.rs @@ -252,13 +252,13 @@ fn find_stmt_assigns_to<'a, 'tcx: 'a>( stmts .rev() .find_map(|stmt| { - if let mir::StatementKind::Assign( + if let mir::StatementKind::Assign(box ( mir::Place { base: mir::PlaceBase::Local(local), .. }, v, - ) = &stmt.kind + )) = &stmt.kind { if *local == to { return Some(v); @@ -269,10 +269,10 @@ fn find_stmt_assigns_to<'a, 'tcx: 'a>( }) .and_then(|v| { if by_ref { - if let mir::Rvalue::Ref(_, _, ref place) = **v { + if let mir::Rvalue::Ref(_, _, ref place) = v { return base_local_and_movability(cx, mir, place); } - } else if let mir::Rvalue::Use(mir::Operand::Copy(ref place)) = **v { + } else if let mir::Rvalue::Use(mir::Operand::Copy(ref place)) = v { return base_local_and_movability(cx, mir, place); } None @@ -291,7 +291,6 @@ fn base_local_and_movability<'tcx>( use rustc::mir::Place; use rustc::mir::PlaceBase; use rustc::mir::PlaceRef; - use rustc::mir::Projection; // Dereference. You cannot move things out from a borrowed value. let mut deref = false; @@ -303,7 +302,7 @@ fn base_local_and_movability<'tcx>( mut projection, } = place.as_ref(); if let PlaceBase::Local(local) = place_base { - while let Some(box Projection { base, elem }) = projection { + while let [base @ .., elem] = projection { projection = base; deref = matches!(elem, mir::ProjectionElem::Deref); field = !field