提交 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(
}, borrow_span));
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
// we're not in the uninteresting case where `B` is a
......@@ -1505,16 +1505,16 @@ pub(super) fn report_illegal_reassignment(
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;
match place.projection {
None => {
StorageDeadOrDrop::LocalStorageDead
}
Some(box Projection { ref base, ref elem }) => {
let base_access = self.classify_drop_access_kind(&Place {
base: place.base.clone(),
projection: base.clone(),
let base_access = self.classify_drop_access_kind(PlaceRef {
base: place.base,
projection: base,
});
match elem {
ProjectionElem::Deref => match base_access {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册