diff options
| author | bors <bors@rust-lang.org> | 2024-01-22 18:36:35 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-01-22 18:36:35 +0000 |
| commit | 0b6e7e2acfbb4c80b1d02b7ab0eb6c9aaf6cc92d (patch) | |
| tree | 5f8f5a1f0f8659f14ec7ff6cfb1435857691df8f | |
| parent | a8017ae131cf500b2fc005d01a062cecb121cba9 (diff) | |
| parent | ad4d90b4a95887834ac93339ff388ed58cc8840d (diff) | |
| download | rust-0b6e7e2acfbb4c80b1d02b7ab0eb6c9aaf6cc92d.tar.gz rust-0b6e7e2acfbb4c80b1d02b7ab0eb6c9aaf6cc92d.zip | |
Auto merge of #12183 - y21:issue12182, r=dswij
respect `#[allow]` attributes in `single_call_fn` lint Fixes #12182 If we delay linting to `check_crate_post`, we need to use `span_lint_hir_and_then`, since otherwise it would only respect those lint level attributes at the crate root. <sub>... maybe we can have an internal lint for this somehow?</sub> changelog: respect `#[allow]` attributes in `single_call_fn` lint
| -rw-r--r-- | clippy_lints/src/single_call_fn.rs | 12 | ||||
| -rw-r--r-- | tests/ui/single_call_fn.rs | 11 |
2 files changed, 18 insertions, 5 deletions
diff --git a/clippy_lints/src/single_call_fn.rs b/clippy_lints/src/single_call_fn.rs index 8e181c3ccc7..03877420774 100644 --- a/clippy_lints/src/single_call_fn.rs +++ b/clippy_lints/src/single_call_fn.rs @@ -1,4 +1,4 @@ -use clippy_utils::diagnostics::span_lint_and_help; +use clippy_utils::diagnostics::span_lint_hir_and_then; use clippy_utils::{is_from_proc_macro, is_in_test_function}; use rustc_data_structures::fx::FxHashMap; use rustc_hir::def_id::LocalDefId; @@ -88,16 +88,18 @@ impl<'tcx> LateLintPass<'tcx> for SingleCallFn { }; cx.tcx.hir().visit_all_item_likes_in_crate(&mut v); - for usage in self.def_id_to_usage.values() { + for (&def_id, usage) in &self.def_id_to_usage { let single_call_fn_span = usage.0; if let [caller_span] = *usage.1 { - span_lint_and_help( + span_lint_hir_and_then( cx, SINGLE_CALL_FN, + cx.tcx.local_def_id_to_hir_id(def_id), single_call_fn_span, "this function is only used once", - Some(caller_span), - "used here", + |diag| { + diag.span_help(caller_span, "used here"); + }, ); } } diff --git a/tests/ui/single_call_fn.rs b/tests/ui/single_call_fn.rs index 3cc8061647d..c20214feccc 100644 --- a/tests/ui/single_call_fn.rs +++ b/tests/ui/single_call_fn.rs @@ -69,6 +69,17 @@ fn e() { #[test] fn k() {} +mod issue12182 { + #[allow(clippy::single_call_fn)] + fn print_foo(text: &str) { + println!("{text}"); + } + + fn use_print_foo() { + print_foo("foo"); + } +} + #[test] fn l() { k(); |
