);
let mut error_reported = false;
match kind {
- Reservation(WriteKind::MutableBorrow(BorrowKind::Unique))
- | Write(WriteKind::MutableBorrow(BorrowKind::Unique)) => {
- if let Err(_place_err) = self.is_mutable(place, LocalMutationIsAllowed::Yes) {
- span_bug!(span, "&unique borrow for {:?} should not fail", place);
- }
- }
- Reservation(WriteKind::MutableBorrow(BorrowKind::Mut { .. }))
- | Write(WriteKind::MutableBorrow(BorrowKind::Mut { .. })) => {
+ Reservation(WriteKind::MutableBorrow(borrow_kind @ BorrowKind::Unique))
+ | Reservation(WriteKind::MutableBorrow(borrow_kind @ BorrowKind::Mut { .. }))
+ | Write(WriteKind::MutableBorrow(borrow_kind @ BorrowKind::Unique))
+ | Write(WriteKind::MutableBorrow(borrow_kind @ BorrowKind::Mut { .. })) =>
+ {
+ let is_local_mutation_allowed = match borrow_kind {
+ BorrowKind::Unique => LocalMutationIsAllowed::Yes,
+ BorrowKind::Mut { .. } => is_local_mutation_allowed,
+ BorrowKind::Shared => unreachable!(),
+ };
match self.is_mutable(place, is_local_mutation_allowed) {
Ok(root_place) => self.add_used_mut(root_place, flow_state),
Err(place_err) => {