diff options
| author | Jason Newcomb <jsnewcomb@pm.me> | 2025-02-15 02:46:49 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-15 02:46:49 +0000 |
| commit | 0dd5c4ddebb36db0fd463cdd665e217e48acb3ae (patch) | |
| tree | 9d80d98bbb7f7e725729d32aa6c02626cd8addc3 | |
| parent | 4e899e16f9daad8fc134fc9f18d7564ca6fb4d6a (diff) | |
| parent | b167895a19dd8c634c66b5c672a83cdb610ab8a9 (diff) | |
| download | rust-0dd5c4ddebb36db0fd463cdd665e217e48acb3ae.tar.gz rust-0dd5c4ddebb36db0fd463cdd665e217e48acb3ae.zip | |
Fix `used_underscore_items` lint uses of foreign functions (#14205)
Fixed #14156 changelog: none
| -rw-r--r-- | clippy_lints/src/misc.rs | 4 | ||||
| -rw-r--r-- | tests/ui/used_underscore_items.rs | 10 |
2 files changed, 12 insertions, 2 deletions
diff --git a/clippy_lints/src/misc.rs b/clippy_lints/src/misc.rs index fca416d9e64..693d1a8dd76 100644 --- a/clippy_lints/src/misc.rs +++ b/clippy_lints/src/misc.rs @@ -7,7 +7,6 @@ use clippy_utils::{ }; use rustc_errors::Applicability; use rustc_hir::def::Res; -use rustc_hir::def_id::LOCAL_CRATE; use rustc_hir::intravisit::FnKind; use rustc_hir::{ BinOpKind, BindingMode, Body, ByRef, Expr, ExprKind, FnDecl, Mutability, PatKind, QPath, Stmt, StmtKind, @@ -286,7 +285,8 @@ fn used_underscore_items<'tcx>(cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) { if name.starts_with('_') && !name.starts_with("__") && !definition_span.from_expansion() - && def_id.krate == LOCAL_CRATE + && def_id.is_local() + && !cx.tcx.is_foreign_item(def_id) { span_lint_and_then( cx, diff --git a/tests/ui/used_underscore_items.rs b/tests/ui/used_underscore_items.rs index 223016a5c96..ed76f4e68dc 100644 --- a/tests/ui/used_underscore_items.rs +++ b/tests/ui/used_underscore_items.rs @@ -61,3 +61,13 @@ fn external_item_call() { external_item::_exernal_foo(); } + +// should not lint foreign functions. +// issue #14156 +extern "C" { + pub fn _exit(code: i32) -> !; +} + +fn _f() { + unsafe { _exit(1) } +} |
