Struct rustc_borrowck::type_check::liveness::LiveVariablesVisitor
source · struct LiveVariablesVisitor<'cx, 'tcx> {
tcx: TyCtxt<'tcx>,
liveness_constraints: &'cx mut LivenessValues,
}Expand description
Visitor looking for regions that should be live within rvalues or calls.
Fields§
§tcx: TyCtxt<'tcx>§liveness_constraints: &'cx mut LivenessValuesImplementations§
source§impl<'cx, 'tcx> LiveVariablesVisitor<'cx, 'tcx>
impl<'cx, 'tcx> LiveVariablesVisitor<'cx, 'tcx>
sourcefn record_regions_live_at<T>(&mut self, value: T, location: Location)where
T: TypeVisitable<TyCtxt<'tcx>>,
fn record_regions_live_at<T>(&mut self, value: T, location: Location)where
T: TypeVisitable<TyCtxt<'tcx>>,
Some variable is “regular live” at location – i.e., it may be used later. This means that
all regions appearing in the type of value must be live at location.
Trait Implementations§
source§impl<'cx, 'tcx> Visitor<'tcx> for LiveVariablesVisitor<'cx, 'tcx>
impl<'cx, 'tcx> Visitor<'tcx> for LiveVariablesVisitor<'cx, 'tcx>
source§fn visit_args(&mut self, args: &GenericArgsRef<'tcx>, location: Location)
fn visit_args(&mut self, args: &GenericArgsRef<'tcx>, location: Location)
We sometimes have args within an rvalue, or within a
call. Make them live at the location where they appear.
source§fn visit_region(&mut self, region: Region<'tcx>, location: Location)
fn visit_region(&mut self, region: Region<'tcx>, location: Location)
We sometimes have regions within an rvalue, or within a
call. Make them live at the location where they appear.
source§fn visit_ty(&mut self, ty: Ty<'tcx>, ty_context: TyContext)
fn visit_ty(&mut self, ty: Ty<'tcx>, ty_context: TyContext)
We sometimes have tys within an rvalue, or within a
call. Make them live at the location where they appear.
fn visit_body(&mut self, body: &Body<'tcx>)
fn visit_basic_block_data( &mut self, block: BasicBlock, data: &BasicBlockData<'tcx> )
fn visit_source_scope_data(&mut self, scope_data: &SourceScopeData<'tcx>)
fn visit_statement(&mut self, statement: &Statement<'tcx>, location: Location)
fn visit_assign( &mut self, place: &Place<'tcx>, rvalue: &Rvalue<'tcx>, location: Location )
fn visit_terminator( &mut self, terminator: &Terminator<'tcx>, location: Location )
fn visit_assert_message( &mut self, msg: &AssertKind<Operand<'tcx>>, location: Location )
fn visit_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location)
fn visit_operand(&mut self, operand: &Operand<'tcx>, location: Location)
fn visit_ascribe_user_ty( &mut self, place: &Place<'tcx>, variance: Variance, user_ty: &UserTypeProjection, location: Location )
fn visit_coverage(&mut self, coverage: &Coverage, location: Location)
fn visit_retag( &mut self, kind: RetagKind, place: &Place<'tcx>, location: Location )
fn visit_place( &mut self, place: &Place<'tcx>, context: PlaceContext, location: Location )
fn visit_projection( &mut self, place_ref: PlaceRef<'tcx>, context: PlaceContext, location: Location )
fn visit_projection_elem( &mut self, place_ref: PlaceRef<'tcx>, elem: ProjectionElem<Local, Ty<'tcx>>, context: PlaceContext, location: Location )
fn super_place( &mut self, place: &Place<'tcx>, context: PlaceContext, location: Location )
fn super_projection( &mut self, place_ref: PlaceRef<'tcx>, context: PlaceContext, location: Location )
fn super_projection_elem( &mut self, _place_ref: PlaceRef<'tcx>, elem: ProjectionElem<Local, Ty<'tcx>>, _context: PlaceContext, location: Location )
source§fn visit_constant(&mut self, constant: &ConstOperand<'tcx>, location: Location)
fn visit_constant(&mut self, constant: &ConstOperand<'tcx>, location: Location)
required_consts
(i.e., including consts that have been dead-code-eliminated).fn visit_ty_const(&mut self, ct: Const<'tcx>, location: Location)
fn visit_span(&mut self, span: Span)
fn visit_source_info(&mut self, source_info: &SourceInfo)
fn visit_user_type_projection(&mut self, ty: &UserTypeProjection)
fn visit_user_type_annotation( &mut self, index: UserTypeAnnotationIndex, ty: &CanonicalUserTypeAnnotation<'tcx> )
fn visit_local_decl(&mut self, local: Local, local_decl: &LocalDecl<'tcx>)
fn visit_var_debug_info(&mut self, var_debug_info: &VarDebugInfo<'tcx>)
fn visit_local( &mut self, _local: Local, _context: PlaceContext, _location: Location )
fn visit_source_scope(&mut self, scope: SourceScope)
fn super_body(&mut self, body: &Body<'tcx>)
fn super_basic_block_data( &mut self, block: BasicBlock, data: &BasicBlockData<'tcx> )
fn super_source_scope_data(&mut self, scope_data: &SourceScopeData<'tcx>)
fn super_statement(&mut self, statement: &Statement<'tcx>, location: Location)
fn super_assign( &mut self, place: &Place<'tcx>, rvalue: &Rvalue<'tcx>, location: Location )
fn super_terminator( &mut self, terminator: &Terminator<'tcx>, location: Location )
fn super_assert_message( &mut self, msg: &AssertKind<Operand<'tcx>>, location: Location )
fn super_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location)
fn super_operand(&mut self, operand: &Operand<'tcx>, location: Location)
fn super_ascribe_user_ty( &mut self, place: &Place<'tcx>, variance: Variance, user_ty: &UserTypeProjection, location: Location )
fn super_coverage(&mut self, _coverage: &Coverage, _location: Location)
fn super_retag( &mut self, _kind: RetagKind, place: &Place<'tcx>, location: Location )
fn super_local_decl(&mut self, local: Local, local_decl: &LocalDecl<'tcx>)
fn super_var_debug_info(&mut self, var_debug_info: &VarDebugInfo<'tcx>)
fn super_source_scope(&mut self, _scope: SourceScope)
fn super_constant(&mut self, constant: &ConstOperand<'tcx>, location: Location)
fn super_ty_const(&mut self, _ct: Const<'tcx>, _location: Location)
fn super_span(&mut self, _span: Span)
fn super_source_info(&mut self, source_info: &SourceInfo)
fn super_user_type_projection(&mut self, _ty: &UserTypeProjection)
fn super_user_type_annotation( &mut self, _index: UserTypeAnnotationIndex, ty: &CanonicalUserTypeAnnotation<'tcx> )
fn super_ty(&mut self, _ty: Ty<'tcx>)
fn super_region(&mut self, _region: Region<'tcx>)
fn super_args(&mut self, _args: &&'tcx List<GenericArg<'tcx>>)
fn visit_location(&mut self, body: &Body<'tcx>, location: Location)
Auto Trait Implementations§
impl<'cx, 'tcx> !RefUnwindSafe for LiveVariablesVisitor<'cx, 'tcx>
impl<'cx, 'tcx> !Send for LiveVariablesVisitor<'cx, 'tcx>
impl<'cx, 'tcx> !Sync for LiveVariablesVisitor<'cx, 'tcx>
impl<'cx, 'tcx> Unpin for LiveVariablesVisitor<'cx, 'tcx>
impl<'cx, 'tcx> !UnwindSafe for LiveVariablesVisitor<'cx, 'tcx>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 16 bytes