1
Fork 0

Add BorrowSet to public api

This commit is contained in:
Xavier Denis 2021-10-25 22:16:07 +02:00
parent cf708558b7
commit 9894a9a716
2 changed files with 14 additions and 14 deletions

View file

@ -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> },
} }

View file

@ -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;