borrowscope_runtime/tracker/
expressions.rs1use super::TRACKER;
4
5pub fn track_index_access(
6 #[cfg_attr(not(feature = "track"), allow(unused_variables))] access_id: usize,
7 #[cfg_attr(not(feature = "track"), allow(unused_variables))] container: &str,
8 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
9) {
10 #[cfg(feature = "track")]
11 {
12 let mut tracker = TRACKER.lock();
13 tracker.record_index_access(access_id, container, location);
14 }
15}
16
17#[inline(always)]
19pub fn track_field_access(
20 #[cfg_attr(not(feature = "track"), allow(unused_variables))] access_id: usize,
21 #[cfg_attr(not(feature = "track"), allow(unused_variables))] base: &str,
22 #[cfg_attr(not(feature = "track"), allow(unused_variables))] field: &str,
23 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
24) {
25 #[cfg(feature = "track")]
26 {
27 let mut tracker = TRACKER.lock();
28 tracker.record_field_access(access_id, base, field, location);
29 }
30}
31
32#[inline(always)]
34pub fn track_call(
35 #[cfg_attr(not(feature = "track"), allow(unused_variables))] call_id: usize,
36 #[cfg_attr(not(feature = "track"), allow(unused_variables))] fn_name: &str,
37 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
38) {
39 #[cfg(feature = "track")]
40 {
41 let mut tracker = TRACKER.lock();
42 tracker.record_call(call_id, fn_name, location);
43 }
44}
45
46#[inline(always)]
48pub fn track_lock(
49 #[cfg_attr(not(feature = "track"), allow(unused_variables))] lock_id: usize,
50 #[cfg_attr(not(feature = "track"), allow(unused_variables))] lock_type: &str,
51 #[cfg_attr(not(feature = "track"), allow(unused_variables))] var_name: &str,
52 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
53) {
54 #[cfg(feature = "track")]
55 {
56 let mut tracker = TRACKER.lock();
57 tracker.record_lock(lock_id, lock_type, var_name, location);
58 }
59}
60
61#[inline(always)]
63pub fn track_unwrap(
64 #[cfg_attr(not(feature = "track"), allow(unused_variables))] unwrap_id: usize,
65 #[cfg_attr(not(feature = "track"), allow(unused_variables))] method: &str,
66 #[cfg_attr(not(feature = "track"), allow(unused_variables))] var_name: &str,
67 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
68) {
69 #[cfg(feature = "track")]
70 {
71 let mut tracker = TRACKER.lock();
72 tracker.record_unwrap(unwrap_id, method, var_name, location);
73 }
74}
75
76#[inline(always)]
78pub fn track_clone(
79 #[cfg_attr(not(feature = "track"), allow(unused_variables))] clone_id: usize,
80 #[cfg_attr(not(feature = "track"), allow(unused_variables))] var_name: &str,
81 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
82) {
83 #[cfg(feature = "track")]
84 {
85 let mut tracker = TRACKER.lock();
86 tracker.record_clone(clone_id, var_name, location);
87 }
88}
89
90#[inline(always)]
92pub fn track_deref(
93 #[cfg_attr(not(feature = "track"), allow(unused_variables))] deref_id: usize,
94 #[cfg_attr(not(feature = "track"), allow(unused_variables))] var_name: &str,
95 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
96) {
97 #[cfg(feature = "track")]
98 {
99 let mut tracker = TRACKER.lock();
100 tracker.record_deref(deref_id, var_name, location);
101 }
102}
103
104pub fn track_closure_create(
105 #[cfg_attr(not(feature = "track"), allow(unused_variables))] closure_id: usize,
106 #[cfg_attr(not(feature = "track"), allow(unused_variables))] capture_mode: &str,
107 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
108) {
109 #[cfg(feature = "track")]
110 {
111 let mut tracker = TRACKER.lock();
112 tracker.record_closure_create(closure_id, capture_mode, location);
113 }
114}
115
116#[inline(always)]
118pub fn track_struct_create(
119 #[cfg_attr(not(feature = "track"), allow(unused_variables))] struct_id: usize,
120 #[cfg_attr(not(feature = "track"), allow(unused_variables))] struct_name: &str,
121 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
122) {
123 #[cfg(feature = "track")]
124 {
125 let mut tracker = TRACKER.lock();
126 tracker.record_struct_create(struct_id, struct_name, location);
127 }
128}
129
130#[inline(always)]
132pub fn track_tuple_create(
133 #[cfg_attr(not(feature = "track"), allow(unused_variables))] tuple_id: usize,
134 #[cfg_attr(not(feature = "track"), allow(unused_variables))] arity: usize,
135 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
136) {
137 #[cfg(feature = "track")]
138 {
139 let mut tracker = TRACKER.lock();
140 tracker.record_tuple_create(tuple_id, arity, location);
141 }
142}
143
144#[inline(always)]
146pub fn track_let_else(
147 #[cfg_attr(not(feature = "track"), allow(unused_variables))] let_else_id: usize,
148 #[cfg_attr(not(feature = "track"), allow(unused_variables))] pattern: &str,
149 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
150) {
151 #[cfg(feature = "track")]
152 {
153 let mut tracker = TRACKER.lock();
154 tracker.record_let_else(let_else_id, pattern, location);
155 }
156}
157
158#[inline(always)]
160pub fn track_range(
161 #[cfg_attr(not(feature = "track"), allow(unused_variables))] range_id: usize,
162 #[cfg_attr(not(feature = "track"), allow(unused_variables))] range_type: &str,
163 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
164) {
165 #[cfg(feature = "track")]
166 {
167 let mut tracker = TRACKER.lock();
168 tracker.record_range(range_id, range_type, location);
169 }
170}
171
172#[inline(always)]
174pub fn track_binary_op(
175 #[cfg_attr(not(feature = "track"), allow(unused_variables))] op_id: usize,
176 #[cfg_attr(not(feature = "track"), allow(unused_variables))] operator: &str,
177 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
178) {
179 #[cfg(feature = "track")]
180 {
181 let mut tracker = TRACKER.lock();
182 tracker.record_binary_op(op_id, operator, location);
183 }
184}
185
186#[inline(always)]
188pub fn track_array_create(
189 #[cfg_attr(not(feature = "track"), allow(unused_variables))] array_id: usize,
190 #[cfg_attr(not(feature = "track"), allow(unused_variables))] length: usize,
191 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
192) {
193 #[cfg(feature = "track")]
194 {
195 let mut tracker = TRACKER.lock();
196 tracker.record_array_create(array_id, length, location);
197 }
198}
199
200#[inline(always)]
202pub fn track_type_cast(
203 #[cfg_attr(not(feature = "track"), allow(unused_variables))] cast_id: usize,
204 #[cfg_attr(not(feature = "track"), allow(unused_variables))] target_type: &str,
205 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
206) {
207 #[cfg(feature = "track")]
208 {
209 let mut tracker = TRACKER.lock();
210 tracker.record_type_cast(cast_id, target_type, location);
211 }
212}