Make BorrowSet/BorrowData fields accessible via public getters · rust-lang/rust@4d5d470 (original) (raw)
`@@ -20,18 +20,37 @@ pub struct BorrowSet<'tcx> {
`
20
20
`` /// by the Location
of the assignment statement in which it
``
21
21
`/// appears on the right hand side. Thus the location is the map
`
22
22
`` /// key, and its position in the map corresponds to BorrowIndex
.
``
23
``
`-
pub location_map: FxIndexMap<Location, BorrowData<'tcx>>,
`
``
23
`+
pub(crate) location_map: FxIndexMap<Location, BorrowData<'tcx>>,
`
24
24
``
25
25
`/// Locations which activate borrows.
`
26
26
`/// NOTE: a given location may activate more than one borrow in the future
`
27
27
`/// when more general two-phase borrow support is introduced, but for now we
`
28
28
`/// only need to store one borrow index.
`
29
``
`-
pub activation_map: FxIndexMap<Location, Vec>,
`
``
29
`+
pub(crate) activation_map: FxIndexMap<Location, Vec>,
`
30
30
``
31
31
`/// Map from local to all the borrows on that local.
`
32
``
`-
pub local_map: FxIndexMap<mir::Local, FxIndexSet>,
`
``
32
`+
pub(crate) local_map: FxIndexMap<mir::Local, FxIndexSet>,
`
33
33
``
34
``
`-
pub locals_state_at_exit: LocalsStateAtExit,
`
``
34
`+
pub(crate) locals_state_at_exit: LocalsStateAtExit,
`
``
35
`+
}
`
``
36
+
``
37
`+
// These methods are public to support borrowck consumers.
`
``
38
`+
impl<'tcx> BorrowSet<'tcx> {
`
``
39
`+
pub fn location_map(&self) -> &FxIndexMap<Location, BorrowData<'tcx>> {
`
``
40
`+
&self.location_map
`
``
41
`+
}
`
``
42
+
``
43
`+
pub fn activation_map(&self) -> &FxIndexMap<Location, Vec> {
`
``
44
`+
&self.activation_map
`
``
45
`+
}
`
``
46
+
``
47
`+
pub fn local_map(&self) -> &FxIndexMap<mir::Local, FxIndexSet> {
`
``
48
`+
&self.local_map
`
``
49
`+
}
`
``
50
+
``
51
`+
pub fn locals_state_at_exit(&self) -> &LocalsStateAtExit {
`
``
52
`+
&self.locals_state_at_exit
`
``
53
`+
}
`
35
54
`}
`
36
55
``
37
56
`impl<'tcx> Index for BorrowSet<'tcx> {
`
`@@ -55,17 +74,44 @@ pub enum TwoPhaseActivation {
`
55
74
`pub struct BorrowData<'tcx> {
`
56
75
`/// Location where the borrow reservation starts.
`
57
76
`/// In many cases, this will be equal to the activation location but not always.
`
58
``
`-
pub reserve_location: Location,
`
``
77
`+
pub(crate) reserve_location: Location,
`
59
78
`/// Location where the borrow is activated.
`
60
``
`-
pub activation_location: TwoPhaseActivation,
`
``
79
`+
pub(crate) activation_location: TwoPhaseActivation,
`
61
80
`/// What kind of borrow this is
`
62
``
`-
pub kind: mir::BorrowKind,
`
``
81
`+
pub(crate) kind: mir::BorrowKind,
`
63
82
`/// The region for which this borrow is live
`
64
``
`-
pub region: RegionVid,
`
``
83
`+
pub(crate) region: RegionVid,
`
65
84
`/// Place from which we are borrowing
`
66
``
`-
pub borrowed_place: mir::Place<'tcx>,
`
``
85
`+
pub(crate) borrowed_place: mir::Place<'tcx>,
`
67
86
`/// Place to which the borrow was stored
`
68
``
`-
pub assigned_place: mir::Place<'tcx>,
`
``
87
`+
pub(crate) assigned_place: mir::Place<'tcx>,
`
``
88
`+
}
`
``
89
+
``
90
`+
// These methods are public to support borrowck consumers.
`
``
91
`+
impl<'tcx> BorrowData<'tcx> {
`
``
92
`+
pub fn reserve_location(&self) -> Location {
`
``
93
`+
self.reserve_location
`
``
94
`+
}
`
``
95
+
``
96
`+
pub fn activation_location(&self) -> TwoPhaseActivation {
`
``
97
`+
self.activation_location
`
``
98
`+
}
`
``
99
+
``
100
`+
pub fn kind(&self) -> mir::BorrowKind {
`
``
101
`+
self.kind
`
``
102
`+
}
`
``
103
+
``
104
`+
pub fn region(&self) -> RegionVid {
`
``
105
`+
self.region
`
``
106
`+
}
`
``
107
+
``
108
`+
pub fn borrowed_place(&self) -> mir::Place<'tcx> {
`
``
109
`+
self.borrowed_place
`
``
110
`+
}
`
``
111
+
``
112
`+
pub fn assigned_place(&self) -> mir::Place<'tcx> {
`
``
113
`+
self.assigned_place
`
``
114
`+
}
`
69
115
`}
`
70
116
``
71
117
`impl<'tcx> fmt::Display for BorrowData<'tcx> {
`