Struct rustc_mir::transform::function_item_references::FunctionItemRefChecker[−][src]

struct FunctionItemRefChecker<'a, 'tcx> {
    tcx: TyCtxt<'tcx>,
    body: &'a Body<'tcx>,
}

Fields

tcx: TyCtxt<'tcx>body: &'a Body<'tcx>

Implementations

impl<'a, 'tcx> FunctionItemRefChecker<'a, 'tcx>[src]

fn check_bound_args(
    &self,
    def_id: DefId,
    substs_ref: SubstsRef<'tcx>,
    args: &[Operand<'tcx>],
    source_info: SourceInfo
)
[src]

Emits a lint for function reference arguments bound by fmt::Pointer in calls to the function defined by def_id with the substitutions substs_ref.

fn is_pointer_trait(&self, bound: &PredicateKind<'tcx>) -> Option<Ty<'tcx>>[src]

If the given predicate is the trait fmt::Pointer, returns the bound parameter type.

fn is_fn_ref(ty: Ty<'tcx>) -> Option<(DefId, SubstsRef<'tcx>)>[src]

If a type is a reference or raw pointer to the anonymous type of a function definition, returns that function’s DefId and SubstsRef.

fn nth_arg_span(&self, args: &[Operand<'tcx>], n: usize) -> Span[src]

fn emit_lint(
    &self,
    fn_id: DefId,
    fn_substs: SubstsRef<'tcx>,
    source_info: SourceInfo,
    span: Span
)
[src]

Trait Implementations

impl<'a, 'tcx> Visitor<'tcx> for FunctionItemRefChecker<'a, 'tcx>[src]

fn visit_terminator(
    &mut self,
    terminator: &Terminator<'tcx>,
    location: Location
)
[src]

Emits a lint for function reference arguments bound by fmt::Pointer or passed to transmute. This only handles arguments in calls outside macro expansions to avoid double counting function references formatted as pointers by macros.

fn visit_operand(&mut self, operand: &Operand<'tcx>, location: Location)[src]

Emits a lint for function references formatted with fmt::Pointer::fmt by macros. These cases are handled as operands instead of call terminators to avoid any dependence on unstable, internal formatting details like whether fmt is called directly or not.

fn visit_body(&mut self, body: &Body<'tcx>)[src]

fn visit_basic_block_data(
    &mut self,
    block: BasicBlock,
    data: &BasicBlockData<'tcx>
)
[src]

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_assign(
    &mut self,
    place: &Place<'tcx>,
    rvalue: &Rvalue<'tcx>,
    location: Location
)
[src]

fn visit_assert_message(
    &mut self,
    msg: &AssertKind<Operand<'tcx>>,
    location: Location
)
[src]

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]

fn visit_coverage(&mut self, coverage: &Coverage, location: Location)[src]

fn visit_retag(
    &mut self,
    kind: &RetagKind,
    place: &Place<'tcx>,
    location: Location
)
[src]

fn visit_place(
    &mut self,
    place: &Place<'tcx>,
    context: PlaceContext,
    location: Location
)
[src]

fn visit_projection(
    &mut self,
    place_ref: PlaceRef<'tcx>,
    context: PlaceContext,
    location: Location
)
[src]

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]

fn super_place(
    &mut self,
    place: &Place<'tcx>,
    context: PlaceContext,
    location: Location
)
[src]

fn super_projection(
    &mut self,
    place_ref: PlaceRef<'tcx>,
    context: PlaceContext,
    location: Location
)
[src]

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]

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]

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]

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]

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]

fn super_terminator(
    &mut self,
    terminator: &Terminator<'tcx>,
    location: Location
)
[src]

fn super_assert_message(
    &mut self,
    msg: &AssertKind<Operand<'tcx>>,
    location: Location
)
[src]

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]

fn super_coverage(&mut self, _coverage: &Coverage, _location: Location)[src]

fn super_retag(
    &mut self,
    _kind: &RetagKind,
    place: &Place<'tcx>,
    location: Location
)
[src]

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]

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, 'tcx> !RefUnwindSafe for FunctionItemRefChecker<'a, 'tcx>

impl<'a, 'tcx> !Send for FunctionItemRefChecker<'a, 'tcx>

impl<'a, 'tcx> !Sync for FunctionItemRefChecker<'a, 'tcx>

impl<'a, 'tcx> Unpin for FunctionItemRefChecker<'a, 'tcx> where
    'tcx: 'a, 

impl<'a, 'tcx> !UnwindSafe for FunctionItemRefChecker<'a, 'tcx>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized, 
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized, 
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized, 
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

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]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<T> WithConstness for T[src]

fn with_constness(self, constness: Constness) -> ConstnessAnd<Self>[src]

fn with_const(self) -> ConstnessAnd<Self>[src]

fn without_const(self) -> ConstnessAnd<Self>[src]