mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-24 05:33:27 +00:00
add test for closures
This commit is contained in:
parent
07dbcbda12
commit
a8605269bd
4 changed files with 63 additions and 22 deletions
|
@ -88,14 +88,14 @@ impl<'tcx> LateLintPass<'tcx> for SingleCallFn {
|
||||||
cx.tcx.hir().visit_all_item_likes_in_crate(&mut v);
|
cx.tcx.hir().visit_all_item_likes_in_crate(&mut v);
|
||||||
|
|
||||||
for usage in self.def_id_to_usage.values() {
|
for usage in self.def_id_to_usage.values() {
|
||||||
let fn_span = usage.0;
|
let single_call_fn_span = usage.0;
|
||||||
if let [usage] = *usage.1 {
|
if let [caller_span] = *usage.1 {
|
||||||
span_lint_and_help(
|
span_lint_and_help(
|
||||||
cx,
|
cx,
|
||||||
SINGLE_CALL_FN,
|
SINGLE_CALL_FN,
|
||||||
fn_span,
|
single_call_fn_span,
|
||||||
"this function is only used once",
|
"this function is only used once",
|
||||||
Some(usage),
|
Some(caller_span),
|
||||||
"used here",
|
"used here",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -289,7 +289,7 @@ define_Conf! {
|
||||||
/// arithmetic-side-effects-allowed-unary = ["SomeType", "AnotherType"]
|
/// arithmetic-side-effects-allowed-unary = ["SomeType", "AnotherType"]
|
||||||
/// ```
|
/// ```
|
||||||
(arithmetic_side_effects_allowed_unary: rustc_data_structures::fx::FxHashSet<String> = <_>::default()),
|
(arithmetic_side_effects_allowed_unary: rustc_data_structures::fx::FxHashSet<String> = <_>::default()),
|
||||||
/// Lint: ENUM_VARIANT_NAMES, LARGE_TYPES_PASSED_BY_VALUE, TRIVIALLY_COPY_PASS_BY_REF, UNNECESSARY_WRAPS, UNUSED_SELF, UPPER_CASE_ACRONYMS, WRONG_SELF_CONVENTION, BOX_COLLECTION, REDUNDANT_ALLOCATION, RC_BUFFER, VEC_BOX, OPTION_OPTION, LINKEDLIST, RC_MUTEX, UNNECESSARY_BOX_RETURNS.
|
/// Lint: ENUM_VARIANT_NAMES, LARGE_TYPES_PASSED_BY_VALUE, TRIVIALLY_COPY_PASS_BY_REF, UNNECESSARY_WRAPS, UNUSED_SELF, UPPER_CASE_ACRONYMS, WRONG_SELF_CONVENTION, BOX_COLLECTION, REDUNDANT_ALLOCATION, RC_BUFFER, VEC_BOX, OPTION_OPTION, LINKEDLIST, RC_MUTEX, UNNECESSARY_BOX_RETURNS, SINGLE_CALL_FN.
|
||||||
///
|
///
|
||||||
/// Suppress lints whenever the suggested change would cause breakage for other crates.
|
/// Suppress lints whenever the suggested change would cause breakage for other crates.
|
||||||
(avoid_breaking_exported_api: bool = true),
|
(avoid_breaking_exported_api: bool = true),
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
//@aux-build:proc_macros.rs
|
//@aux-build:proc_macros.rs
|
||||||
#![allow(unused)]
|
#![allow(clippy::redundant_closure_call, unused)]
|
||||||
#![warn(clippy::single_call_fn)]
|
#![warn(clippy::single_call_fn)]
|
||||||
#![no_main]
|
#![no_main]
|
||||||
|
|
||||||
|
@ -9,6 +9,23 @@ extern crate proc_macros;
|
||||||
// Do not lint since it's public
|
// Do not lint since it's public
|
||||||
pub fn f() {}
|
pub fn f() {}
|
||||||
|
|
||||||
|
fn i() {}
|
||||||
|
fn j() {}
|
||||||
|
|
||||||
|
fn h() {
|
||||||
|
// Linted
|
||||||
|
let a = i;
|
||||||
|
// Do not lint closures
|
||||||
|
let a = (|| {
|
||||||
|
// Not linted
|
||||||
|
a();
|
||||||
|
// Imo, it's reasonable to lint this as the function is still only being used once. Just in
|
||||||
|
// a closure.
|
||||||
|
j();
|
||||||
|
});
|
||||||
|
a();
|
||||||
|
}
|
||||||
|
|
||||||
fn g() {
|
fn g() {
|
||||||
f();
|
f();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,5 @@
|
||||||
error: this function is only used once
|
error: this function is only used once
|
||||||
--> $DIR/single_call_fn.rs:26:1
|
--> $DIR/single_call_fn.rs:33:1
|
||||||
|
|
|
||||||
LL | fn a() {}
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
help: used here
|
|
||||||
--> $DIR/single_call_fn.rs:29:5
|
|
||||||
|
|
|
||||||
LL | a();
|
|
||||||
| ^
|
|
||||||
= note: `-D clippy::single-call-fn` implied by `-D warnings`
|
|
||||||
|
|
||||||
error: this function is only used once
|
|
||||||
--> $DIR/single_call_fn.rs:16:1
|
|
||||||
|
|
|
|
||||||
LL | / fn c() {
|
LL | / fn c() {
|
||||||
LL | | println!("really");
|
LL | | println!("really");
|
||||||
|
@ -22,10 +9,47 @@ LL | | }
|
||||||
| |_^
|
| |_^
|
||||||
|
|
|
|
||||||
help: used here
|
help: used here
|
||||||
--> $DIR/single_call_fn.rs:23:5
|
--> $DIR/single_call_fn.rs:40:5
|
||||||
|
|
|
|
||||||
LL | c();
|
LL | c();
|
||||||
| ^
|
| ^
|
||||||
|
= note: `-D clippy::single-call-fn` implied by `-D warnings`
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
error: this function is only used once
|
||||||
|
--> $DIR/single_call_fn.rs:12:1
|
||||||
|
|
|
||||||
|
LL | fn i() {}
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: used here
|
||||||
|
--> $DIR/single_call_fn.rs:17:13
|
||||||
|
|
|
||||||
|
LL | let a = i;
|
||||||
|
| ^
|
||||||
|
|
||||||
|
error: this function is only used once
|
||||||
|
--> $DIR/single_call_fn.rs:43:1
|
||||||
|
|
|
||||||
|
LL | fn a() {}
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: used here
|
||||||
|
--> $DIR/single_call_fn.rs:46:5
|
||||||
|
|
|
||||||
|
LL | a();
|
||||||
|
| ^
|
||||||
|
|
||||||
|
error: this function is only used once
|
||||||
|
--> $DIR/single_call_fn.rs:13:1
|
||||||
|
|
|
||||||
|
LL | fn j() {}
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: used here
|
||||||
|
--> $DIR/single_call_fn.rs:24:9
|
||||||
|
|
|
||||||
|
LL | j();
|
||||||
|
| ^
|
||||||
|
|
||||||
|
error: aborting due to 4 previous errors
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue