Auto merge of #53100 - VPashkov:issue-52456-improper_ctypes, r=eddyb
Fix improper_ctypes lint for individual foreign items Fixes #52456. r? @eddyb
This commit is contained in:
commit
76b69a604e
2 changed files with 17 additions and 13 deletions
|
|
@ -790,21 +790,18 @@ impl LintPass for ImproperCTypes {
|
|||
}
|
||||
|
||||
impl<'a, 'tcx> LateLintPass<'a, 'tcx> for ImproperCTypes {
|
||||
fn check_item(&mut self, cx: &LateContext, it: &hir::Item) {
|
||||
fn check_foreign_item(&mut self, cx: &LateContext, it: &hir::ForeignItem) {
|
||||
let mut vis = ImproperCTypesVisitor { cx: cx };
|
||||
if let hir::ItemKind::ForeignMod(ref nmod) = it.node {
|
||||
if nmod.abi != Abi::RustIntrinsic && nmod.abi != Abi::PlatformIntrinsic {
|
||||
for ni in &nmod.items {
|
||||
match ni.node {
|
||||
hir::ForeignItemKind::Fn(ref decl, _, _) => {
|
||||
vis.check_foreign_fn(ni.id, decl);
|
||||
}
|
||||
hir::ForeignItemKind::Static(ref ty, _) => {
|
||||
vis.check_foreign_static(ni.id, ty.span);
|
||||
}
|
||||
hir::ForeignItemKind::Type => ()
|
||||
}
|
||||
let abi = cx.tcx.hir.get_foreign_abi(it.id);
|
||||
if abi != Abi::RustIntrinsic && abi != Abi::PlatformIntrinsic {
|
||||
match it.node {
|
||||
hir::ForeignItemKind::Fn(ref decl, _, _) => {
|
||||
vis.check_foreign_fn(it.id, decl);
|
||||
}
|
||||
hir::ForeignItemKind::Static(ref ty, _) => {
|
||||
vis.check_foreign_static(it.id, ty.span);
|
||||
}
|
||||
hir::ForeignItemKind::Type => ()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,6 +88,13 @@ extern {
|
|||
pub fn good15(p: TransparentLifetime);
|
||||
pub fn good16(p: TransparentUnit<ZeroSize>);
|
||||
pub fn good17(p: TransparentCustomZst);
|
||||
#[allow(improper_ctypes)]
|
||||
pub fn good18(_: &String);
|
||||
}
|
||||
|
||||
#[allow(improper_ctypes)]
|
||||
extern {
|
||||
pub fn good19(_: &String);
|
||||
}
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue