Struct rustc_lint::builtin::ClashingExternDeclarations
source · 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§
source§impl ClashingExternDeclarations
impl ClashingExternDeclarations
pub(crate) fn new() -> Self
sourcefn insert(&mut self, tcx: TyCtxt<'_>, fi: &ForeignItem<'_>) -> Option<HirId>
fn insert(&mut self, tcx: TyCtxt<'_>, fi: &ForeignItem<'_>) -> Option<HirId>
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.
sourcefn name_of_extern_decl(tcx: TyCtxt<'_>, fi: &ForeignItem<'_>) -> SymbolName
fn name_of_extern_decl(tcx: TyCtxt<'_>, fi: &ForeignItem<'_>) -> SymbolName
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.
sourcefn structurally_same_type<'tcx>(
cx: &LateContext<'tcx>,
a: Ty<'tcx>,
b: Ty<'tcx>,
ckind: CItemKind
) -> bool
fn structurally_same_type<'tcx>(
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).
Trait Implementations§
source§impl<'tcx> LateLintPass<'tcx> for ClashingExternDeclarations
impl<'tcx> LateLintPass<'tcx> for ClashingExternDeclarations
fn check_foreign_item(
&mut self,
cx: &LateContext<'tcx>,
this_fi: &ForeignItem<'_>
)
fn check_body(&mut self, _: &LateContext<'tcx>, _: &'tcx Body<'tcx>)
fn check_body_post(&mut self, _: &LateContext<'tcx>, _: &'tcx Body<'tcx>)
fn check_crate(&mut self, _: &LateContext<'tcx>)
fn check_crate_post(&mut self, _: &LateContext<'tcx>)
fn check_mod(&mut self, _: &LateContext<'tcx>, _: &'tcx Mod<'tcx>, _: HirId)
fn check_item(&mut self, _: &LateContext<'tcx>, _: &'tcx Item<'tcx>)
fn check_item_post(&mut self, _: &LateContext<'tcx>, _: &'tcx Item<'tcx>)
fn check_local(&mut self, _: &LateContext<'tcx>, _: &'tcx Local<'tcx>)
fn check_block(&mut self, _: &LateContext<'tcx>, _: &'tcx Block<'tcx>)
fn check_block_post(&mut self, _: &LateContext<'tcx>, _: &'tcx Block<'tcx>)
fn check_stmt(&mut self, _: &LateContext<'tcx>, _: &'tcx Stmt<'tcx>)
fn check_arm(&mut self, _: &LateContext<'tcx>, _: &'tcx Arm<'tcx>)
fn check_pat(&mut self, _: &LateContext<'tcx>, _: &'tcx Pat<'tcx>)
fn check_expr(&mut self, _: &LateContext<'tcx>, _: &'tcx Expr<'tcx>)
fn check_expr_post(&mut self, _: &LateContext<'tcx>, _: &'tcx Expr<'tcx>)
fn check_ty(&mut self, _: &LateContext<'tcx>, _: &'tcx Ty<'tcx>)
fn check_generic_param(
&mut self,
_: &LateContext<'tcx>,
_: &'tcx GenericParam<'tcx>
)
fn check_generics(&mut self, _: &LateContext<'tcx>, _: &'tcx Generics<'tcx>)
fn check_poly_trait_ref(
&mut self,
_: &LateContext<'tcx>,
_: &'tcx PolyTraitRef<'tcx>
)
fn check_fn(
&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>)
fn check_impl_item(&mut self, _: &LateContext<'tcx>, _: &'tcx ImplItem<'tcx>)
fn check_impl_item_post(&mut self, _: &LateContext<'tcx>, _: &'tcx ImplItem<'tcx>)
fn check_struct_def(&mut self, _: &LateContext<'tcx>, _: &'tcx VariantData<'tcx>)
fn check_field_def(&mut self, _: &LateContext<'tcx>, _: &'tcx FieldDef<'tcx>)
fn check_variant(&mut self, _: &LateContext<'tcx>, _: &'tcx Variant<'tcx>)
fn check_path(&mut self, _: &LateContext<'tcx>, _: &Path<'tcx>, _: HirId)
fn check_attribute(&mut self, _: &LateContext<'tcx>, _: &'tcx Attribute)
fn enter_lint_attrs(&mut self, _: &LateContext<'tcx>, _: &'tcx [Attribute])
fn exit_lint_attrs(&mut self, _: &LateContext<'tcx>, _: &'tcx [Attribute])
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§
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 32 bytes