Struct rustc_lint::builtin::ClashingExternDeclarations [−][src]
Fields
seen_decls: FxHashMap<Symbol, HirId>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]
cx: &LateContext<'tcx>,
a: Ty<'tcx>,
b: Ty<'tcx>,
ckind: CItemKind
) -> bool
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]
&mut self,
cx: &LateContext<'tcx>,
this_fi: &ForeignItem<'_>
)
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]
&mut self,
_: &LateContext<'tcx>,
_: &'tcx Mod<'tcx>,
_: Span,
_: HirId
)
fn check_mod_post(
&mut self,
_: &LateContext<'tcx>,
_: &'tcx Mod<'tcx>,
_: Span,
_: HirId
)[src]
&mut self,
_: &LateContext<'tcx>,
_: &'tcx Mod<'tcx>,
_: Span,
_: HirId
)
fn check_foreign_item_post(
&mut self,
_: &LateContext<'tcx>,
_: &'tcx ForeignItem<'tcx>
)[src]
&mut self,
_: &LateContext<'tcx>,
_: &'tcx ForeignItem<'tcx>
)
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]
&mut self,
_: &LateContext<'tcx>,
_: &'tcx GenericArg<'tcx>
)
fn check_generic_param(
&mut self,
_: &LateContext<'tcx>,
_: &'tcx GenericParam<'tcx>
)[src]
&mut self,
_: &LateContext<'tcx>,
_: &'tcx GenericParam<'tcx>
)
fn check_generics(&mut self, _: &LateContext<'tcx>, _: &'tcx Generics<'tcx>)[src]
fn check_where_predicate(
&mut self,
_: &LateContext<'tcx>,
_: &'tcx WherePredicate<'tcx>
)[src]
&mut self,
_: &LateContext<'tcx>,
_: &'tcx WherePredicate<'tcx>
)
fn check_poly_trait_ref(
&mut self,
_: &LateContext<'tcx>,
_: &'tcx PolyTraitRef<'tcx>,
_: TraitBoundModifier
)[src]
&mut self,
_: &LateContext<'tcx>,
_: &'tcx PolyTraitRef<'tcx>,
_: TraitBoundModifier
)
fn check_fn(
&mut self,
_: &LateContext<'tcx>,
_: FnKind<'tcx>,
_: &'tcx FnDecl<'tcx>,
_: &'tcx Body<'tcx>,
_: Span,
_: HirId
)[src]
&mut self,
_: &LateContext<'tcx>,
_: FnKind<'tcx>,
_: &'tcx FnDecl<'tcx>,
_: &'tcx Body<'tcx>,
_: Span,
_: HirId
)
fn check_fn_post(
&mut self,
_: &LateContext<'tcx>,
_: FnKind<'tcx>,
_: &'tcx FnDecl<'tcx>,
_: &'tcx Body<'tcx>,
_: Span,
_: HirId
)[src]
&mut self,
_: &LateContext<'tcx>,
_: FnKind<'tcx>,
_: &'tcx FnDecl<'tcx>,
_: &'tcx Body<'tcx>,
_: Span,
_: HirId
)
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]
&mut self,
_: &LateContext<'tcx>,
_: &'tcx TraitItem<'tcx>
)
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]
&mut self,
_: &LateContext<'tcx>,
_: &'tcx ImplItem<'tcx>
)
fn check_struct_def(
&mut self,
_: &LateContext<'tcx>,
_: &'tcx VariantData<'tcx>
)[src]
&mut self,
_: &LateContext<'tcx>,
_: &'tcx VariantData<'tcx>
)
fn check_struct_def_post(
&mut self,
_: &LateContext<'tcx>,
_: &'tcx VariantData<'tcx>
)[src]
&mut self,
_: &LateContext<'tcx>,
_: &'tcx VariantData<'tcx>
)
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]
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]
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>,