Struct rustc_lint::builtin::ClashingExternDeclarations[−][src]

pub struct ClashingExternDeclarations {
    seen_decls: FxHashMap<Symbol, HirId>,
}

Fields

seen_decls: FxHashMap<Symbol, HirId>
Expand description

Map of function symbol name to the first-seen hir id for that symbol name.. If seen_decls contains an entry for key K, it means a symbol with name K has been seen by this lint and the symbol should be reported as a clashing declaration.

Implementations

impl ClashingExternDeclarations[src]

pub(crate) fn new() -> Self[src]

fn insert(&mut self, tcx: TyCtxt<'_>, fi: &ForeignItem<'_>) -> Option<HirId>[src]

Insert a new foreign item into the seen set. If a symbol with the same name already exists for the item, return its HirId without updating the set.

fn name_of_extern_decl(tcx: TyCtxt<'_>, fi: &ForeignItem<'_>) -> SymbolName[src]

Get the name of the symbol that’s linked against for a given extern declaration. That is, the name specified in a #[link_name = …] attribute if one was specified, else, just the symbol’s name.

fn structurally_same_type<'tcx>(
    cx: &LateContext<'tcx>,
    a: Ty<'tcx>,
    b: Ty<'tcx>,
    ckind: CItemKind
) -> bool
[src]

Checks whether two types are structurally the same enough that the declarations shouldn’t clash. We need this so we don’t emit a lint when two modules both declare an extern struct, with the same members (as the declarations shouldn’t clash).

impl ClashingExternDeclarations[src]

Trait Implementations

impl<'tcx> LateLintPass<'tcx> for ClashingExternDeclarations[src]

fn check_foreign_item(
    &mut self,
    cx: &LateContext<'tcx>,
    this_fi: &ForeignItem<'_>
)
[src]

fn check_param(&mut self, _: &LateContext<'tcx>, _: &'tcx Param<'tcx>)[src]

fn check_body(&mut self, _: &LateContext<'tcx>, _: &'tcx Body<'tcx>)[src]

fn check_body_post(&mut self, _: &LateContext<'tcx>, _: &'tcx Body<'tcx>)[src]

fn check_name(&mut self, _: &LateContext<'tcx>, _: Span, _: Symbol)[src]

fn check_crate(&mut self, _: &LateContext<'tcx>, _: &'tcx Crate<'tcx>)[src]

fn check_crate_post(&mut self, _: &LateContext<'tcx>, _: &'tcx Crate<'tcx>)[src]

fn check_mod(
    &mut self,
    _: &LateContext<'tcx>,
    _: &'tcx Mod<'tcx>,
    _: Span,
    _: HirId
)
[src]

fn check_mod_post(
    &mut self,
    _: &LateContext<'tcx>,
    _: &'tcx Mod<'tcx>,
    _: Span,
    _: HirId
)
[src]

fn check_foreign_item_post(
    &mut self,
    _: &LateContext<'tcx>,
    _: &'tcx ForeignItem<'tcx>
)
[src]

fn check_item(&mut self, _: &LateContext<'tcx>, _: &'tcx Item<'tcx>)[src]

fn check_item_post(&mut self, _: &LateContext<'tcx>, _: &'tcx Item<'tcx>)[src]

fn check_local(&mut self, _: &LateContext<'tcx>, _: &'tcx Local<'tcx>)[src]

fn check_block(&mut self, _: &LateContext<'tcx>, _: &'tcx Block<'tcx>)[src]

fn check_block_post(&mut self, _: &LateContext<'tcx>, _: &'tcx Block<'tcx>)[src]

fn check_stmt(&mut self, _: &LateContext<'tcx>, _: &'tcx Stmt<'tcx>)[src]

fn check_arm(&mut self, _: &LateContext<'tcx>, _: &'tcx Arm<'tcx>)[src]

fn check_pat(&mut self, _: &LateContext<'tcx>, _: &'tcx Pat<'tcx>)[src]

fn check_expr(&mut self, _: &LateContext<'tcx>, _: &'tcx Expr<'tcx>)[src]

fn check_expr_post(&mut self, _: &LateContext<'tcx>, _: &'tcx Expr<'tcx>)[src]

fn check_ty(&mut self, _: &LateContext<'tcx>, _: &'tcx Ty<'tcx>)[src]

fn check_generic_arg(
    &mut self,
    _: &LateContext<'tcx>,
    _: &'tcx GenericArg<'tcx>
)
[src]

fn check_generic_param(
    &mut self,
    _: &LateContext<'tcx>,
    _: &'tcx GenericParam<'tcx>
)
[src]

fn check_generics(&mut self, _: &LateContext<'tcx>, _: &'tcx Generics<'tcx>)[src]

fn check_where_predicate(
    &mut self,
    _: &LateContext<'tcx>,
    _: &'tcx WherePredicate<'tcx>
)
[src]

fn check_poly_trait_ref(
    &mut self,
    _: &LateContext<'tcx>,
    _: &'tcx PolyTraitRef<'tcx>,
    _: TraitBoundModifier
)
[src]

fn check_fn(
    &mut self,
    _: &LateContext<'tcx>,
    _: FnKind<'tcx>,
    _: &'tcx FnDecl<'tcx>,
    _: &'tcx Body<'tcx>,
    _: Span,
    _: HirId
)
[src]

fn check_fn_post(
    &mut self,
    _: &LateContext<'tcx>,
    _: FnKind<'tcx>,
    _: &'tcx FnDecl<'tcx>,
    _: &'tcx Body<'tcx>,
    _: Span,
    _: HirId
)
[src]

fn check_trait_item(&mut self, _: &LateContext<'tcx>, _: &'tcx TraitItem<'tcx>)[src]

fn check_trait_item_post(
    &mut self,
    _: &LateContext<'tcx>,
    _: &'tcx TraitItem<'tcx>
)
[src]

fn check_impl_item(&mut self, _: &LateContext<'tcx>, _: &'tcx ImplItem<'tcx>)[src]

fn check_impl_item_post(
    &mut self,
    _: &LateContext<'tcx>,
    _: &'tcx ImplItem<'tcx>
)
[src]

fn check_struct_def(
    &mut self,
    _: &LateContext<'tcx>,
    _: &'tcx VariantData<'tcx>
)
[src]

fn check_struct_def_post(
    &mut self,
    _: &LateContext<'tcx>,
    _: &'tcx VariantData<'tcx>
)
[src]

fn check_field_def(&mut self, _: &LateContext<'tcx>, _: &'tcx FieldDef<'tcx>)[src]

fn check_variant(&mut self, _: &LateContext<'tcx>, _: &'tcx Variant<'tcx>)[src]

fn check_variant_post(&mut self, _: &LateContext<'tcx>, _: &'tcx Variant<'tcx>)[src]

fn check_lifetime(&mut self, _: &LateContext<'tcx>, _: &'tcx Lifetime)[src]

fn check_path(&mut self, _: &LateContext<'tcx>, _: &'tcx Path<'tcx>, _: HirId)[src]

fn check_attribute(&mut self, _: &LateContext<'tcx>, _: &'tcx Attribute)[src]

fn enter_lint_attrs(&mut self, _: &LateContext<'tcx>, _: &'tcx [Attribute])[src]

fn exit_lint_attrs(&mut self, _: &LateContext<'tcx>, _: &'tcx [Attribute])[src]

impl LintPass for ClashingExternDeclarations[src]

fn name(&self) -> &'static str[src]

Auto Trait Implementations

impl RefUnwindSafe for ClashingExternDeclarations

impl Send for ClashingExternDeclarations

impl Sync for ClashingExternDeclarations

impl Unpin for ClashingExternDeclarations

impl UnwindSafe for ClashingExternDeclarations

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.