Struct rustc_mir::transform::check_consts::resolver::TransferFunction [−][src]
struct TransferFunction<'a, 'mir, 'tcx, Q> {
ccx: &'a ConstCx<'mir, 'tcx>,
qualifs_per_local: &'a mut BitSet<Local>,
_qualif: PhantomData<Q>,
}Expand description
A Visitor that propagates qualifs between locals. This defines the transfer function of
FlowSensitiveAnalysis.
This transfer does nothing when encountering an indirect assignment. Consumers should rely on
the MaybeMutBorrowedLocals dataflow pass to see if a Local may have become qualified via
an indirect assignment or function call.
Fields
ccx: &'a ConstCx<'mir, 'tcx>qualifs_per_local: &'a mut BitSet<Local>_qualif: PhantomData<Q>Implementations
impl<Q, 'a, 'mir, 'tcx> TransferFunction<'a, 'mir, 'tcx, Q> where
Q: Qualif, [src]
impl<Q, 'a, 'mir, 'tcx> TransferFunction<'a, 'mir, 'tcx, Q> where
Q: Qualif, [src]fn new(
ccx: &'a ConstCx<'mir, 'tcx>,
qualifs_per_local: &'a mut BitSet<Local>
) -> Self[src]
ccx: &'a ConstCx<'mir, 'tcx>,
qualifs_per_local: &'a mut BitSet<Local>
) -> Self
fn initialize_state(&mut self)[src]
fn assign_qualif_direct(&mut self, place: &Place<'tcx>, value: bool)[src]
fn apply_call_return_effect(
&mut self,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
return_place: Place<'tcx>
)[src]
&mut self,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
return_place: Place<'tcx>
)
Trait Implementations
impl<Q, 'tcx> Visitor<'tcx> for TransferFunction<'_, '_, 'tcx, Q> where
Q: Qualif, [src]
impl<Q, 'tcx> Visitor<'tcx> for TransferFunction<'_, '_, 'tcx, Q> where
Q: Qualif, [src]fn visit_operand(&mut self, operand: &Operand<'tcx>, location: Location)[src]
fn visit_assign(
&mut self,
place: &Place<'tcx>,
rvalue: &Rvalue<'tcx>,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
rvalue: &Rvalue<'tcx>,
location: Location
)
fn visit_terminator(
&mut self,
terminator: &Terminator<'tcx>,
location: Location
)[src]
&mut self,
terminator: &Terminator<'tcx>,
location: Location
)
fn visit_body(&mut self, body: &Body<'tcx>)[src]
fn visit_basic_block_data(
&mut self,
block: BasicBlock,
data: &BasicBlockData<'tcx>
)[src]
&mut self,
block: BasicBlock,
data: &BasicBlockData<'tcx>
)
fn visit_source_scope_data(&mut self, scope_data: &SourceScopeData<'tcx>)[src]
fn visit_statement(&mut self, statement: &Statement<'tcx>, location: Location)[src]
fn visit_assert_message(
&mut self,
msg: &AssertKind<Operand<'tcx>>,
location: Location
)[src]
&mut self,
msg: &AssertKind<Operand<'tcx>>,
location: Location
)
fn visit_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location)[src]
fn visit_ascribe_user_ty(
&mut self,
place: &Place<'tcx>,
variance: &Variance,
user_ty: &UserTypeProjection,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
variance: &Variance,
user_ty: &UserTypeProjection,
location: Location
)
fn visit_coverage(&mut self, coverage: &Coverage, location: Location)[src]
fn visit_retag(
&mut self,
kind: &RetagKind,
place: &Place<'tcx>,
location: Location
)[src]
&mut self,
kind: &RetagKind,
place: &Place<'tcx>,
location: Location
)
fn visit_place(
&mut self,
place: &Place<'tcx>,
context: PlaceContext,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
context: PlaceContext,
location: Location
)
fn visit_projection(
&mut self,
place_ref: PlaceRef<'tcx>,
context: PlaceContext,
location: Location
)[src]
&mut self,
place_ref: PlaceRef<'tcx>,
context: PlaceContext,
location: Location
)
fn visit_projection_elem(
&mut self,
local: Local,
proj_base: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
elem: ProjectionElem<Local, &'tcx TyS<'tcx>>,
context: PlaceContext,
location: Location
)[src]
&mut self,
local: Local,
proj_base: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
elem: ProjectionElem<Local, &'tcx TyS<'tcx>>,
context: PlaceContext,
location: Location
)
fn super_place(
&mut self,
place: &Place<'tcx>,
context: PlaceContext,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
context: PlaceContext,
location: Location
)
fn super_projection(
&mut self,
place_ref: PlaceRef<'tcx>,
context: PlaceContext,
location: Location
)[src]
&mut self,
place_ref: PlaceRef<'tcx>,
context: PlaceContext,
location: Location
)
fn super_projection_elem(
&mut self,
_local: Local,
_proj_base: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
elem: ProjectionElem<Local, &'tcx TyS<'tcx>>,
_context: PlaceContext,
location: Location
)[src]
&mut self,
_local: Local,
_proj_base: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
elem: ProjectionElem<Local, &'tcx TyS<'tcx>>,
_context: PlaceContext,
location: Location
)
fn visit_constant(&mut self, constant: &Constant<'tcx>, location: Location)[src]
fn visit_span(&mut self, span: &Span)[src]
fn visit_source_info(&mut self, source_info: &SourceInfo)[src]
fn visit_ty(&mut self, ty: &'tcx TyS<'tcx>, TyContext)[src]
fn visit_user_type_projection(&mut self, ty: &UserTypeProjection)[src]
fn visit_user_type_annotation(
&mut self,
index: UserTypeAnnotationIndex,
ty: &CanonicalUserTypeAnnotation<'tcx>
)[src]
&mut self,
index: UserTypeAnnotationIndex,
ty: &CanonicalUserTypeAnnotation<'tcx>
)
fn visit_region(&mut self, region: &&'tcx RegionKind, Location)[src]
fn visit_const(&mut self, constant: &&'tcx Const<'tcx>, Location)[src]
fn visit_substs(&mut self, substs: &&'tcx List<GenericArg<'tcx>>, Location)[src]
fn visit_local_decl(&mut self, local: Local, local_decl: &LocalDecl<'tcx>)[src]
fn visit_var_debug_info(&mut self, var_debug_info: &VarDebugInfo<'tcx>)[src]
fn visit_local(
&mut self,
_local: &Local,
_context: PlaceContext,
_location: Location
)[src]
&mut self,
_local: &Local,
_context: PlaceContext,
_location: Location
)
fn visit_source_scope(&mut self, scope: &SourceScope)[src]
fn super_body(&mut self, body: &Body<'tcx>)[src]
fn super_basic_block_data(
&mut self,
block: BasicBlock,
data: &BasicBlockData<'tcx>
)[src]
&mut self,
block: BasicBlock,
data: &BasicBlockData<'tcx>
)
fn super_source_scope_data(&mut self, scope_data: &SourceScopeData<'tcx>)[src]
fn super_statement(&mut self, statement: &Statement<'tcx>, location: Location)[src]
fn super_assign(
&mut self,
place: &Place<'tcx>,
rvalue: &Rvalue<'tcx>,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
rvalue: &Rvalue<'tcx>,
location: Location
)
fn super_terminator(
&mut self,
terminator: &Terminator<'tcx>,
location: Location
)[src]
&mut self,
terminator: &Terminator<'tcx>,
location: Location
)
fn super_assert_message(
&mut self,
msg: &AssertKind<Operand<'tcx>>,
location: Location
)[src]
&mut self,
msg: &AssertKind<Operand<'tcx>>,
location: Location
)
fn super_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location)[src]
fn super_operand(&mut self, operand: &Operand<'tcx>, location: Location)[src]
fn super_ascribe_user_ty(
&mut self,
place: &Place<'tcx>,
_variance: &Variance,
user_ty: &UserTypeProjection,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
_variance: &Variance,
user_ty: &UserTypeProjection,
location: Location
)
fn super_coverage(&mut self, _coverage: &Coverage, _location: Location)[src]
fn super_retag(
&mut self,
_kind: &RetagKind,
place: &Place<'tcx>,
location: Location
)[src]
&mut self,
_kind: &RetagKind,
place: &Place<'tcx>,
location: Location
)
fn super_local_decl(&mut self, local: Local, local_decl: &LocalDecl<'tcx>)[src]
fn super_var_debug_info(&mut self, var_debug_info: &VarDebugInfo<'tcx>)[src]
fn super_source_scope(&mut self, _scope: &SourceScope)[src]
fn super_constant(&mut self, constant: &Constant<'tcx>, location: Location)[src]
fn super_span(&mut self, _span: &Span)[src]
fn super_source_info(&mut self, source_info: &SourceInfo)[src]
fn super_user_type_projection(&mut self, _ty: &UserTypeProjection)[src]
fn super_user_type_annotation(
&mut self,
_index: UserTypeAnnotationIndex,
ty: &CanonicalUserTypeAnnotation<'tcx>
)[src]
&mut self,
_index: UserTypeAnnotationIndex,
ty: &CanonicalUserTypeAnnotation<'tcx>
)
fn super_ty(&mut self, _ty: &'tcx TyS<'tcx>)[src]
fn super_region(&mut self, _region: &&'tcx RegionKind)[src]
fn super_const(&mut self, _const: &&'tcx Const<'tcx>)[src]
fn super_substs(&mut self, _substs: &&'tcx List<GenericArg<'tcx>>)[src]
fn visit_location(&mut self, body: &Body<'tcx>, location: Location)[src]
Auto Trait Implementations
impl<'a, 'mir, 'tcx, Q> !RefUnwindSafe for TransferFunction<'a, 'mir, 'tcx, Q>
impl<'a, 'mir, 'tcx, Q> !Send for TransferFunction<'a, 'mir, 'tcx, Q>
impl<'a, 'mir, 'tcx, Q> !Sync for TransferFunction<'a, 'mir, 'tcx, Q>
impl<'a, 'mir, 'tcx, Q> Unpin for TransferFunction<'a, 'mir, 'tcx, Q> where
Q: Unpin,
'mir: 'a,
'tcx: 'a,
Q: Unpin,
'mir: 'a,
'tcx: 'a,
impl<'a, 'mir, 'tcx, Q> !UnwindSafe for TransferFunction<'a, 'mir, 'tcx, Q>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> WithConstness for T[src]
impl<T> WithConstness for T[src]