提交 72251d55 编写于 作者: S Santiago Pastorino

Avoid cloning Place in classify_drop_access_kind

上级 75c0c8c6
...@@ -730,7 +730,7 @@ pub(super) fn report_borrowed_value_does_not_live_long_enough( ...@@ -730,7 +730,7 @@ pub(super) fn report_borrowed_value_does_not_live_long_enough(
}, borrow_span)); }, borrow_span));
if let StorageDeadOrDrop::Destructor(dropped_ty) = if let StorageDeadOrDrop::Destructor(dropped_ty) =
self.classify_drop_access_kind(&borrow.borrowed_place) self.classify_drop_access_kind(borrow.borrowed_place.as_place_ref())
{ {
// If a borrow of path `B` conflicts with drop of `D` (and // If a borrow of path `B` conflicts with drop of `D` (and
// we're not in the uninteresting case where `B` is a // we're not in the uninteresting case where `B` is a
...@@ -1505,16 +1505,16 @@ pub(super) fn report_illegal_reassignment( ...@@ -1505,16 +1505,16 @@ pub(super) fn report_illegal_reassignment(
err.buffer(&mut self.errors_buffer); err.buffer(&mut self.errors_buffer);
} }
fn classify_drop_access_kind(&self, place: &Place<'tcx>) -> StorageDeadOrDrop<'tcx> { fn classify_drop_access_kind(&self, place: PlaceRef<'cx, 'tcx>) -> StorageDeadOrDrop<'tcx> {
let tcx = self.infcx.tcx; let tcx = self.infcx.tcx;
match place.projection { match place.projection {
None => { None => {
StorageDeadOrDrop::LocalStorageDead StorageDeadOrDrop::LocalStorageDead
} }
Some(box Projection { ref base, ref elem }) => { Some(box Projection { ref base, ref elem }) => {
let base_access = self.classify_drop_access_kind(&Place { let base_access = self.classify_drop_access_kind(PlaceRef {
base: place.base.clone(), base: place.base,
projection: base.clone(), projection: base,
}); });
match elem { match elem {
ProjectionElem::Deref => match base_access { ProjectionElem::Deref => match base_access {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册