Add BorrowSet to public api
This commit is contained in:
parent
cf708558b7
commit
9894a9a716
2 changed files with 14 additions and 14 deletions
|
@ -12,22 +12,22 @@ use rustc_mir_dataflow::move_paths::MoveData;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::ops::Index;
|
use std::ops::Index;
|
||||||
|
|
||||||
crate struct BorrowSet<'tcx> {
|
pub struct BorrowSet<'tcx> {
|
||||||
/// The fundamental map relating bitvector indexes to the borrows
|
/// The fundamental map relating bitvector indexes to the borrows
|
||||||
/// in the MIR. Each borrow is also uniquely identified in the MIR
|
/// in the MIR. Each borrow is also uniquely identified in the MIR
|
||||||
/// by the `Location` of the assignment statement in which it
|
/// by the `Location` of the assignment statement in which it
|
||||||
/// appears on the right hand side. Thus the location is the map
|
/// appears on the right hand side. Thus the location is the map
|
||||||
/// key, and its position in the map corresponds to `BorrowIndex`.
|
/// key, and its position in the map corresponds to `BorrowIndex`.
|
||||||
crate location_map: FxIndexMap<Location, BorrowData<'tcx>>,
|
pub location_map: FxIndexMap<Location, BorrowData<'tcx>>,
|
||||||
|
|
||||||
/// Locations which activate borrows.
|
/// Locations which activate borrows.
|
||||||
/// NOTE: a given location may activate more than one borrow in the future
|
/// NOTE: a given location may activate more than one borrow in the future
|
||||||
/// when more general two-phase borrow support is introduced, but for now we
|
/// when more general two-phase borrow support is introduced, but for now we
|
||||||
/// only need to store one borrow index.
|
/// only need to store one borrow index.
|
||||||
crate activation_map: FxHashMap<Location, Vec<BorrowIndex>>,
|
pub activation_map: FxHashMap<Location, Vec<BorrowIndex>>,
|
||||||
|
|
||||||
/// Map from local to all the borrows on that local.
|
/// Map from local to all the borrows on that local.
|
||||||
crate local_map: FxHashMap<mir::Local, FxHashSet<BorrowIndex>>,
|
pub local_map: FxHashMap<mir::Local, FxHashSet<BorrowIndex>>,
|
||||||
|
|
||||||
crate locals_state_at_exit: LocalsStateAtExit,
|
crate locals_state_at_exit: LocalsStateAtExit,
|
||||||
}
|
}
|
||||||
|
@ -43,27 +43,27 @@ impl<'tcx> Index<BorrowIndex> for BorrowSet<'tcx> {
|
||||||
/// Location where a two-phase borrow is activated, if a borrow
|
/// Location where a two-phase borrow is activated, if a borrow
|
||||||
/// is in fact a two-phase borrow.
|
/// is in fact a two-phase borrow.
|
||||||
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
|
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
|
||||||
crate enum TwoPhaseActivation {
|
pub enum TwoPhaseActivation {
|
||||||
NotTwoPhase,
|
NotTwoPhase,
|
||||||
NotActivated,
|
NotActivated,
|
||||||
ActivatedAt(Location),
|
ActivatedAt(Location),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
crate struct BorrowData<'tcx> {
|
pub struct BorrowData<'tcx> {
|
||||||
/// Location where the borrow reservation starts.
|
/// Location where the borrow reservation starts.
|
||||||
/// In many cases, this will be equal to the activation location but not always.
|
/// In many cases, this will be equal to the activation location but not always.
|
||||||
crate reserve_location: Location,
|
pub reserve_location: Location,
|
||||||
/// Location where the borrow is activated.
|
/// Location where the borrow is activated.
|
||||||
crate activation_location: TwoPhaseActivation,
|
pub activation_location: TwoPhaseActivation,
|
||||||
/// What kind of borrow this is
|
/// What kind of borrow this is
|
||||||
crate kind: mir::BorrowKind,
|
pub kind: mir::BorrowKind,
|
||||||
/// The region for which this borrow is live
|
/// The region for which this borrow is live
|
||||||
crate region: RegionVid,
|
pub region: RegionVid,
|
||||||
/// Place from which we are borrowing
|
/// Place from which we are borrowing
|
||||||
crate borrowed_place: mir::Place<'tcx>,
|
pub borrowed_place: mir::Place<'tcx>,
|
||||||
/// Place to which the borrow was stored
|
/// Place to which the borrow was stored
|
||||||
crate assigned_place: mir::Place<'tcx>,
|
pub assigned_place: mir::Place<'tcx>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'tcx> fmt::Display for BorrowData<'tcx> {
|
impl<'tcx> fmt::Display for BorrowData<'tcx> {
|
||||||
|
@ -78,7 +78,7 @@ impl<'tcx> fmt::Display for BorrowData<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
crate enum LocalsStateAtExit {
|
pub enum LocalsStateAtExit {
|
||||||
AllAreInvalidated,
|
AllAreInvalidated,
|
||||||
SomeAreInvalidated { has_storage_dead_or_moved: BitSet<Local> },
|
SomeAreInvalidated { has_storage_dead_or_moved: BitSet<Local> },
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,7 @@ use facts::AllFacts;
|
||||||
|
|
||||||
use self::path_utils::*;
|
use self::path_utils::*;
|
||||||
|
|
||||||
mod borrow_set;
|
pub mod borrow_set;
|
||||||
mod borrowck_errors;
|
mod borrowck_errors;
|
||||||
mod constraint_generation;
|
mod constraint_generation;
|
||||||
mod constraints;
|
mod constraints;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue