mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-23 13:13:34 +00:00
don't add paren on occurrences that is in call args
This commit is contained in:
parent
40b6aa0e86
commit
33182495ac
4 changed files with 49 additions and 30 deletions
|
@ -5,7 +5,7 @@ use clippy_utils::sugg::Sugg;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
use rustc_hir as hir;
|
use rustc_hir as hir;
|
||||||
use rustc_hir::intravisit::{Visitor as HirVisitor, Visitor};
|
use rustc_hir::intravisit::{Visitor as HirVisitor, Visitor};
|
||||||
use rustc_hir::{intravisit as hir_visit, CoroutineKind, CoroutineSource};
|
use rustc_hir::{intravisit as hir_visit, CoroutineKind, CoroutineSource, Node};
|
||||||
use rustc_lint::{LateContext, LateLintPass};
|
use rustc_lint::{LateContext, LateLintPass};
|
||||||
use rustc_middle::hir::nested_filter;
|
use rustc_middle::hir::nested_filter;
|
||||||
use rustc_middle::lint::in_external_macro;
|
use rustc_middle::lint::in_external_macro;
|
||||||
|
@ -176,12 +176,19 @@ impl<'tcx> LateLintPass<'tcx> for RedundantClosureCall {
|
||||||
hint = hint.asyncify();
|
hint = hint.asyncify();
|
||||||
}
|
}
|
||||||
|
|
||||||
diag.span_suggestion(
|
let is_in_fn_call_arg = clippy_utils::get_parent_node(cx.tcx, expr.hir_id)
|
||||||
full_expr.span,
|
.map(|x| match x {
|
||||||
"try doing something like",
|
Node::Expr(expr) => matches!(expr.kind, hir::ExprKind::Call(_, _)),
|
||||||
hint.maybe_par(),
|
_ => false,
|
||||||
applicability,
|
})
|
||||||
);
|
.unwrap_or(false);
|
||||||
|
|
||||||
|
// avoid clippy::double_parens
|
||||||
|
if !is_in_fn_call_arg {
|
||||||
|
hint = hint.maybe_par()
|
||||||
|
};
|
||||||
|
|
||||||
|
diag.span_suggestion(full_expr.span, "try doing something like", hint, applicability);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
#![allow(clippy::redundant_async_block)]
|
#![allow(clippy::redundant_async_block)]
|
||||||
#![allow(clippy::type_complexity)]
|
#![allow(clippy::type_complexity)]
|
||||||
#![allow(unused)]
|
#![allow(unused)]
|
||||||
#![allow(clippy::double_parens)]
|
|
||||||
|
|
||||||
async fn something() -> u32 {
|
async fn something() -> u32 {
|
||||||
21
|
21
|
||||||
|
@ -87,7 +86,7 @@ fn issue9956() {
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn issue11357() {
|
async fn issue11357() {
|
||||||
(async {}).await;
|
async {}.await;
|
||||||
}
|
}
|
||||||
|
|
||||||
mod issue11707 {
|
mod issue11707 {
|
||||||
|
@ -96,6 +95,10 @@ mod issue11707 {
|
||||||
fn spawn_on(fut: impl Future<Output = ()>) {}
|
fn spawn_on(fut: impl Future<Output = ()>) {}
|
||||||
|
|
||||||
fn demo() {
|
fn demo() {
|
||||||
spawn_on((async move {}));
|
spawn_on(async move {});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn avoid_double_parens() {
|
||||||
|
std::convert::identity(13_i32 + 36_i32).leading_zeros();
|
||||||
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
#![allow(clippy::redundant_async_block)]
|
#![allow(clippy::redundant_async_block)]
|
||||||
#![allow(clippy::type_complexity)]
|
#![allow(clippy::type_complexity)]
|
||||||
#![allow(unused)]
|
#![allow(unused)]
|
||||||
#![allow(clippy::double_parens)]
|
|
||||||
|
|
||||||
async fn something() -> u32 {
|
async fn something() -> u32 {
|
||||||
21
|
21
|
||||||
|
@ -99,3 +98,7 @@ mod issue11707 {
|
||||||
spawn_on((|| async move {})());
|
spawn_on((|| async move {})());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn avoid_double_parens() {
|
||||||
|
std::convert::identity((|| 13_i32 + 36_i32)()).leading_zeros();
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:17:13
|
--> $DIR/redundant_closure_call_fixable.rs:16:13
|
||||||
|
|
|
|
||||||
LL | let a = (|| 42)();
|
LL | let a = (|| 42)();
|
||||||
| ^^^^^^^^^ help: try doing something like: `42`
|
| ^^^^^^^^^ help: try doing something like: `42`
|
||||||
|
@ -8,7 +8,7 @@ LL | let a = (|| 42)();
|
||||||
= help: to override `-D warnings` add `#[allow(clippy::redundant_closure_call)]`
|
= help: to override `-D warnings` add `#[allow(clippy::redundant_closure_call)]`
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:18:13
|
--> $DIR/redundant_closure_call_fixable.rs:17:13
|
||||||
|
|
|
|
||||||
LL | let b = (async || {
|
LL | let b = (async || {
|
||||||
| _____________^
|
| _____________^
|
||||||
|
@ -28,7 +28,7 @@ LL ~ };
|
||||||
|
|
|
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:23:13
|
--> $DIR/redundant_closure_call_fixable.rs:22:13
|
||||||
|
|
|
|
||||||
LL | let c = (|| {
|
LL | let c = (|| {
|
||||||
| _____________^
|
| _____________^
|
||||||
|
@ -48,13 +48,13 @@ LL ~ };
|
||||||
|
|
|
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:28:13
|
--> $DIR/redundant_closure_call_fixable.rs:27:13
|
||||||
|
|
|
|
||||||
LL | let d = (async || something().await)();
|
LL | let d = (async || something().await)();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try doing something like: `async { something().await }`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try doing something like: `async { something().await }`
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:37:13
|
--> $DIR/redundant_closure_call_fixable.rs:36:13
|
||||||
|
|
|
|
||||||
LL | (|| m!())()
|
LL | (|| m!())()
|
||||||
| ^^^^^^^^^^^ help: try doing something like: `m!()`
|
| ^^^^^^^^^^^ help: try doing something like: `m!()`
|
||||||
|
@ -65,7 +65,7 @@ LL | m2!();
|
||||||
= note: this error originates in the macro `m2` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `m2` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:32:13
|
--> $DIR/redundant_closure_call_fixable.rs:31:13
|
||||||
|
|
|
|
||||||
LL | (|| 0)()
|
LL | (|| 0)()
|
||||||
| ^^^^^^^^ help: try doing something like: `0`
|
| ^^^^^^^^ help: try doing something like: `0`
|
||||||
|
@ -76,64 +76,70 @@ LL | m2!();
|
||||||
= note: this error originates in the macro `m` which comes from the expansion of the macro `m2` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `m` which comes from the expansion of the macro `m2` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:45:16
|
--> $DIR/redundant_closure_call_fixable.rs:44:16
|
||||||
|
|
|
|
||||||
LL | assert_eq!((|| || 43)()(), 42);
|
LL | assert_eq!((|| || 43)()(), 42);
|
||||||
| ^^^^^^^^^^^^^^ help: try doing something like: `43`
|
| ^^^^^^^^^^^^^^ help: try doing something like: `43`
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:54:10
|
--> $DIR/redundant_closure_call_fixable.rs:53:10
|
||||||
|
|
|
|
||||||
LL | dbg!((|| 42)());
|
LL | dbg!((|| 42)());
|
||||||
| ^^^^^^^^^ help: try doing something like: `42`
|
| ^^^^^^^^^ help: try doing something like: `42`
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:57:13
|
--> $DIR/redundant_closure_call_fixable.rs:56:13
|
||||||
|
|
|
|
||||||
LL | let a = (|| || || 123)();
|
LL | let a = (|| || || 123)();
|
||||||
| ^^^^^^^^^^^^^^^^ help: try doing something like: `(|| || 123)`
|
| ^^^^^^^^^^^^^^^^ help: try doing something like: `(|| || 123)`
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:61:13
|
--> $DIR/redundant_closure_call_fixable.rs:60:13
|
||||||
|
|
|
|
||||||
LL | let a = (|| || || || async || 1)()()()()();
|
LL | let a = (|| || || || async || 1)()()()()();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try doing something like: `async { 1 }`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try doing something like: `async { 1 }`
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:70:13
|
--> $DIR/redundant_closure_call_fixable.rs:69:13
|
||||||
|
|
|
|
||||||
LL | let a = (|| echo!(|| echo!(|| 1)))()()();
|
LL | let a = (|| echo!(|| echo!(|| 1)))()()();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try doing something like: `1`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try doing something like: `1`
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:72:13
|
--> $DIR/redundant_closure_call_fixable.rs:71:13
|
||||||
|
|
|
|
||||||
LL | let a = (|| echo!((|| 123)))()();
|
LL | let a = (|| echo!((|| 123)))()();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try doing something like: `123`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try doing something like: `123`
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:85:11
|
--> $DIR/redundant_closure_call_fixable.rs:84:11
|
||||||
|
|
|
|
||||||
LL | bar()((|| || 42)()(), 5);
|
LL | bar()((|| || 42)()(), 5);
|
||||||
| ^^^^^^^^^^^^^^ help: try doing something like: `42`
|
| ^^^^^^^^^^^^^^ help: try doing something like: `42`
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:86:9
|
--> $DIR/redundant_closure_call_fixable.rs:85:9
|
||||||
|
|
|
|
||||||
LL | foo((|| || 42)()(), 5);
|
LL | foo((|| || 42)()(), 5);
|
||||||
| ^^^^^^^^^^^^^^ help: try doing something like: `42`
|
| ^^^^^^^^^^^^^^ help: try doing something like: `42`
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:90:5
|
--> $DIR/redundant_closure_call_fixable.rs:89:5
|
||||||
|
|
|
|
||||||
LL | (|| async {})().await;
|
LL | (|| async {})().await;
|
||||||
| ^^^^^^^^^^^^^^^ help: try doing something like: `(async {})`
|
| ^^^^^^^^^^^^^^^ help: try doing something like: `async {}`
|
||||||
|
|
||||||
error: try not to call a closure in the expression where it is declared
|
error: try not to call a closure in the expression where it is declared
|
||||||
--> $DIR/redundant_closure_call_fixable.rs:99:18
|
--> $DIR/redundant_closure_call_fixable.rs:98:18
|
||||||
|
|
|
|
||||||
LL | spawn_on((|| async move {})());
|
LL | spawn_on((|| async move {})());
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ help: try doing something like: `(async move {})`
|
| ^^^^^^^^^^^^^^^^^^^^ help: try doing something like: `async move {}`
|
||||||
|
|
||||||
error: aborting due to 16 previous errors
|
error: try not to call a closure in the expression where it is declared
|
||||||
|
--> $DIR/redundant_closure_call_fixable.rs:103:28
|
||||||
|
|
|
||||||
|
LL | std::convert::identity((|| 13_i32 + 36_i32)()).leading_zeros();
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^ help: try doing something like: `13_i32 + 36_i32`
|
||||||
|
|
||||||
|
error: aborting due to 17 previous errors
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue