Activate two phase borrows on all uses
Two phase borrows are only used for adjustments now, so there's no need to not activate them for shared borrows.
This commit is contained in:
parent
2c840ae18d
commit
87ec3b24f6
@ -3,9 +3,7 @@ use crate::borrow_check::nll::ToRegionVid;
|
||||
use crate::dataflow::indexes::BorrowIndex;
|
||||
use crate::dataflow::move_paths::MoveData;
|
||||
use rustc::mir::traversal;
|
||||
use rustc::mir::visit::{
|
||||
PlaceContext, Visitor, NonUseContext, MutatingUseContext, NonMutatingUseContext
|
||||
};
|
||||
use rustc::mir::visit::{PlaceContext, Visitor, NonUseContext, MutatingUseContext};
|
||||
use rustc::mir::{self, Location, Mir, Local};
|
||||
use rustc::ty::{RegionVid, TyCtxt};
|
||||
use rustc::util::nodemap::{FxHashMap, FxHashSet};
|
||||
@ -257,15 +255,7 @@ impl<'a, 'gcx, 'tcx> Visitor<'tcx> for GatherBorrows<'a, 'gcx, 'tcx> {
|
||||
);
|
||||
}
|
||||
|
||||
// Otherwise, this is the unique later use
|
||||
// that we expect.
|
||||
borrow_data.activation_location = match context {
|
||||
// The use of TMP in a shared borrow does not
|
||||
// count as an actual activation.
|
||||
PlaceContext::NonMutatingUse(NonMutatingUseContext::SharedBorrow(..)) |
|
||||
PlaceContext::NonMutatingUse(NonMutatingUseContext::ShallowBorrow(..)) =>
|
||||
TwoPhaseActivation::NotActivated,
|
||||
_ => {
|
||||
// Otherwise, this is the unique later use that we expect.
|
||||
// Double check: This borrow is indeed a two-phase borrow (that is,
|
||||
// we are 'transitioning' from `NotActivated` to `ActivatedAt`) and
|
||||
// we've not found any other activations (checked above).
|
||||
@ -274,14 +264,12 @@ impl<'a, 'gcx, 'tcx> Visitor<'tcx> for GatherBorrows<'a, 'gcx, 'tcx> {
|
||||
TwoPhaseActivation::NotActivated,
|
||||
"never found an activation for this borrow!",
|
||||
);
|
||||
|
||||
self.activation_map
|
||||
.entry(location)
|
||||
.or_default()
|
||||
.push(borrow_index);
|
||||
TwoPhaseActivation::ActivatedAt(location)
|
||||
}
|
||||
};
|
||||
|
||||
borrow_data.activation_location = TwoPhaseActivation::ActivatedAt(location);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user