Skip to content

Commit

Permalink
Convert to Place's new boxed slice projection
Browse files Browse the repository at this point in the history
Fixes breaking change from rust-lang PR rust-lang/rust#63420
  • Loading branch information
jolson88 committed Sep 14, 2019
1 parent ff4a3fb commit 80822b4
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions clippy_lints/src/redundant_clone.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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
Expand All @@ -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;
Expand All @@ -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
Expand Down

0 comments on commit 80822b4

Please sign in to comment.