@@ -176,20 +176,24 @@ struct CaptureInfo {
176
176
}
177
177
178
178
#[ derive( Copy , Clone , Debug ) ]
179
- struct LocalInfo {
179
+ pub struct LocalInfo {
180
180
id : HirId ,
181
181
name : Symbol ,
182
182
is_shorthand : bool ,
183
183
}
184
184
185
185
#[ derive( Copy , Clone , Debug ) ]
186
- enum VarKind {
186
+ pub enum VarKind {
187
187
Param ( HirId , Symbol ) ,
188
188
Local ( LocalInfo ) ,
189
189
Upvar ( HirId , Symbol ) ,
190
+ /// A virtual variable for a temporary expression.
191
+ ///
192
+ /// Used primarily by generator_interior.
193
+ Temporary ( HirId ) ,
190
194
}
191
195
192
- struct IrMaps < ' tcx > {
196
+ pub struct IrMaps < ' tcx > {
193
197
tcx : TyCtxt < ' tcx > ,
194
198
live_node_map : HirIdMap < LiveNode > ,
195
199
variable_map : HirIdMap < Variable > ,
@@ -225,11 +229,14 @@ impl IrMaps<'tcx> {
225
229
debug ! ( "{:?} is node {:?}" , ln, hir_id) ;
226
230
}
227
231
228
- fn add_variable ( & mut self , vk : VarKind ) -> Variable {
232
+ pub fn add_variable ( & mut self , vk : VarKind ) -> Variable {
229
233
let v = self . var_kinds . push ( vk) ;
230
234
231
235
match vk {
232
- Local ( LocalInfo { id : node_id, .. } ) | Param ( node_id, _) | Upvar ( node_id, _) => {
236
+ Local ( LocalInfo { id : node_id, .. } )
237
+ | Param ( node_id, _)
238
+ | Upvar ( node_id, _)
239
+ | Temporary ( node_id) => {
233
240
self . variable_map . insert ( node_id, v) ;
234
241
}
235
242
}
@@ -251,13 +258,14 @@ impl IrMaps<'tcx> {
251
258
fn variable_name ( & self , var : Variable ) -> Symbol {
252
259
match self . var_kinds [ var] {
253
260
Local ( LocalInfo { name, .. } ) | Param ( _, name) | Upvar ( _, name) => name,
261
+ Temporary ( ..) => Symbol :: intern ( "[temporary]" ) ,
254
262
}
255
263
}
256
264
257
265
fn variable_is_shorthand ( & self , var : Variable ) -> bool {
258
266
match self . var_kinds [ var] {
259
267
Local ( LocalInfo { is_shorthand, .. } ) => is_shorthand,
260
- Param ( ..) | Upvar ( ..) => false ,
268
+ Param ( ..) | Upvar ( ..) | Temporary ( .. ) => false ,
261
269
}
262
270
}
263
271
@@ -485,7 +493,7 @@ const ACC_READ: u32 = 1;
485
493
const ACC_WRITE : u32 = 2 ;
486
494
const ACC_USE : u32 = 4 ;
487
495
488
- struct Liveness < ' a , ' tcx > {
496
+ pub struct Liveness < ' a , ' tcx > {
489
497
ir : & ' a mut IrMaps < ' tcx > ,
490
498
typeck_results : & ' a ty:: TypeckResults < ' tcx > ,
491
499
param_env : ty:: ParamEnv < ' tcx > ,
0 commit comments