respect #[allow] attribute in single_call_fn lint

This commit is contained in:
y21 2024-01-21 14:54:01 +01:00
parent 64d08a8b1d
commit ad4d90b4a9
2 changed files with 18 additions and 5 deletions

View File

@ -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");
},
);
}
}

View File

@ -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();