[−][src]Struct rustc_mir::borrow_check::invalidation::InvalidationGenerator
Fields
tcx: TyCtxt<'tcx>all_facts: &'cx mut PoloniusFacts<RustcFacts>location_table: &'cx LocationTablebody: &'cx Body<'tcx>dominators: Dominators<BasicBlock>borrow_set: &'cx BorrowSet<'tcx>Implementations
impl<'cx, 'tcx> InvalidationGenerator<'cx, 'tcx>[src]
pub(in borrow_check::invalidation) fn mutate_place(
&mut self,
location: Location,
place: Place<'tcx>,
kind: AccessDepth,
_mode: MutateMode
)[src]
&mut self,
location: Location,
place: Place<'tcx>,
kind: AccessDepth,
_mode: MutateMode
)
Simulates mutation of a place.
pub(in borrow_check::invalidation) fn consume_operand(
&mut self,
location: Location,
operand: &Operand<'tcx>
)[src]
&mut self,
location: Location,
operand: &Operand<'tcx>
)
Simulates consumption of an operand.
pub(in borrow_check::invalidation) fn consume_rvalue(
&mut self,
location: Location,
rvalue: &Rvalue<'tcx>
)[src]
&mut self,
location: Location,
rvalue: &Rvalue<'tcx>
)
pub(in borrow_check::invalidation) fn access_place(
&mut self,
location: Location,
place: Place<'tcx>,
kind: (AccessDepth, ReadOrWrite),
_is_local_mutation_allowed: LocalMutationIsAllowed
)[src]
&mut self,
location: Location,
place: Place<'tcx>,
kind: (AccessDepth, ReadOrWrite),
_is_local_mutation_allowed: LocalMutationIsAllowed
)
Simulates an access to a place.
pub(in borrow_check::invalidation) fn check_access_for_conflict(
&mut self,
location: Location,
place: Place<'tcx>,
sd: AccessDepth,
rw: ReadOrWrite
)[src]
&mut self,
location: Location,
place: Place<'tcx>,
sd: AccessDepth,
rw: ReadOrWrite
)
pub(in borrow_check::invalidation) fn generate_invalidates(
&mut self,
b: BorrowIndex,
l: Location
)[src]
&mut self,
b: BorrowIndex,
l: Location
)
Generates a new invalidates(L, B) fact.
pub(in borrow_check::invalidation) fn check_activations(
&mut self,
location: Location
)[src]
&mut self,
location: Location
)
Trait Implementations
impl<'cx, 'tcx> Visitor<'tcx> for InvalidationGenerator<'cx, 'tcx>[src]
Visits the whole MIR and generates invalidates() facts.
Most of the code implementing this was stolen from borrow_check/mod.rs.
pub fn visit_statement(
&mut self,
statement: &Statement<'tcx>,
location: Location
)[src]
&mut self,
statement: &Statement<'tcx>,
location: Location
)
pub fn visit_terminator(
&mut self,
terminator: &Terminator<'tcx>,
location: Location
)[src]
&mut self,
terminator: &Terminator<'tcx>,
location: Location
)
pub fn visit_body(&mut self, body: &Body<'tcx>)[src]
pub fn visit_basic_block_data(
&mut self,
block: BasicBlock,
data: &BasicBlockData<'tcx>
)[src]
&mut self,
block: BasicBlock,
data: &BasicBlockData<'tcx>
)
pub fn visit_source_scope_data(&mut self, scope_data: &SourceScopeData<'tcx>)[src]
pub fn visit_assign(
&mut self,
place: &Place<'tcx>,
rvalue: &Rvalue<'tcx>,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
rvalue: &Rvalue<'tcx>,
location: Location
)
pub fn visit_assert_message(
&mut self,
msg: &AssertKind<Operand<'tcx>>,
location: Location
)[src]
&mut self,
msg: &AssertKind<Operand<'tcx>>,
location: Location
)
pub fn visit_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location)[src]
pub fn visit_operand(&mut self, operand: &Operand<'tcx>, location: Location)[src]
pub 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
)
pub fn visit_coverage(&mut self, coverage: &Coverage, location: Location)[src]
pub fn visit_retag(
&mut self,
kind: &RetagKind,
place: &Place<'tcx>,
location: Location
)[src]
&mut self,
kind: &RetagKind,
place: &Place<'tcx>,
location: Location
)
pub fn visit_place(
&mut self,
place: &Place<'tcx>,
context: PlaceContext,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
context: PlaceContext,
location: Location
)
pub fn visit_projection(
&mut self,
local: Local,
projection: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
context: PlaceContext,
location: Location
)[src]
&mut self,
local: Local,
projection: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
context: PlaceContext,
location: Location
)
pub 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
)
pub fn super_place(
&mut self,
place: &Place<'tcx>,
context: PlaceContext,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
context: PlaceContext,
location: Location
)
pub fn super_projection(
&mut self,
local: Local,
projection: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
context: PlaceContext,
location: Location
)[src]
&mut self,
local: Local,
projection: &[ProjectionElem<Local, &'tcx TyS<'tcx>>],
context: PlaceContext,
location: Location
)
pub 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
)
pub fn visit_constant(&mut self, constant: &Constant<'tcx>, location: Location)[src]
pub fn visit_span(&mut self, span: &Span)[src]
pub fn visit_source_info(&mut self, source_info: &SourceInfo)[src]
pub fn visit_ty(&mut self, ty: &'tcx TyS<'tcx>, TyContext)[src]
pub fn visit_user_type_projection(&mut self, ty: &UserTypeProjection)[src]
pub fn visit_user_type_annotation(
&mut self,
index: UserTypeAnnotationIndex,
ty: &CanonicalUserTypeAnnotation<'tcx>
)[src]
&mut self,
index: UserTypeAnnotationIndex,
ty: &CanonicalUserTypeAnnotation<'tcx>
)
pub fn visit_region(&mut self, region: &&'tcx RegionKind, Location)[src]
pub fn visit_const(&mut self, constant: &&'tcx Const<'tcx>, Location)[src]
pub fn visit_substs(&mut self, substs: &&'tcx List<GenericArg<'tcx>>, Location)[src]
pub fn visit_local_decl(&mut self, local: Local, local_decl: &LocalDecl<'tcx>)[src]
pub fn visit_var_debug_info(&mut self, var_debug_info: &VarDebugInfo<'tcx>)[src]
pub fn visit_local(
&mut self,
_local: &Local,
_context: PlaceContext,
_location: Location
)[src]
&mut self,
_local: &Local,
_context: PlaceContext,
_location: Location
)
pub fn visit_source_scope(&mut self, scope: &SourceScope)[src]
pub fn super_body(&mut self, body: &Body<'tcx>)[src]
pub fn super_basic_block_data(
&mut self,
block: BasicBlock,
data: &BasicBlockData<'tcx>
)[src]
&mut self,
block: BasicBlock,
data: &BasicBlockData<'tcx>
)
pub fn super_source_scope_data(&mut self, scope_data: &SourceScopeData<'tcx>)[src]
pub fn super_statement(
&mut self,
statement: &Statement<'tcx>,
location: Location
)[src]
&mut self,
statement: &Statement<'tcx>,
location: Location
)
pub fn super_assign(
&mut self,
place: &Place<'tcx>,
rvalue: &Rvalue<'tcx>,
location: Location
)[src]
&mut self,
place: &Place<'tcx>,
rvalue: &Rvalue<'tcx>,
location: Location
)
pub fn super_terminator(
&mut self,
terminator: &Terminator<'tcx>,
location: Location
)[src]
&mut self,
terminator: &Terminator<'tcx>,
location: Location
)
pub fn super_assert_message(
&mut self,
msg: &AssertKind<Operand<'tcx>>,
location: Location
)[src]
&mut self,
msg: &AssertKind<Operand<'tcx>>,
location: Location
)
pub fn super_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location)[src]
pub fn super_operand(&mut self, operand: &Operand<'tcx>, location: Location)[src]
pub 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
)
pub fn super_coverage(&mut self, _coverage: &Coverage, _location: Location)[src]
pub fn super_retag(
&mut self,
_kind: &RetagKind,
place: &Place<'tcx>,
location: Location
)[src]
&mut self,
_kind: &RetagKind,
place: &Place<'tcx>,
location: Location
)
pub fn super_local_decl(&mut self, local: Local, local_decl: &LocalDecl<'tcx>)[src]
pub fn super_var_debug_info(&mut self, var_debug_info: &VarDebugInfo<'tcx>)[src]
pub fn super_source_scope(&mut self, _scope: &SourceScope)[src]
pub fn super_constant(&mut self, constant: &Constant<'tcx>, location: Location)[src]
pub fn super_span(&mut self, _span: &Span)[src]
pub fn super_source_info(&mut self, source_info: &SourceInfo)[src]
pub fn super_user_type_projection(&mut self, _ty: &UserTypeProjection)[src]
pub fn super_user_type_annotation(
&mut self,
_index: UserTypeAnnotationIndex,
ty: &CanonicalUserTypeAnnotation<'tcx>
)[src]
&mut self,
_index: UserTypeAnnotationIndex,
ty: &CanonicalUserTypeAnnotation<'tcx>
)
pub fn super_ty(&mut self, _ty: &'tcx TyS<'tcx>)[src]
pub fn super_region(&mut self, _region: &&'tcx RegionKind)[src]
pub fn super_const(&mut self, _const: &&'tcx Const<'tcx>)[src]
pub fn super_substs(&mut self, _substs: &&'tcx List<GenericArg<'tcx>>)[src]
pub fn visit_location(&mut self, body: &Body<'tcx>, location: Location)[src]
Auto Trait Implementations
impl<'cx, 'tcx> !RefUnwindSafe for InvalidationGenerator<'cx, 'tcx>
impl<'cx, 'tcx> !Send for InvalidationGenerator<'cx, 'tcx>
impl<'cx, 'tcx> !Sync for InvalidationGenerator<'cx, 'tcx>
impl<'cx, 'tcx> Unpin for InvalidationGenerator<'cx, 'tcx> where
'tcx: 'cx,
'tcx: 'cx,
impl<'cx, 'tcx> !UnwindSafe for InvalidationGenerator<'cx, 'tcx>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.