Auto merge of #9836 - koka831:patch-9300, r=Alexendoo

Fix is_async_fn to check FnKind::Method

This is a follow-up PR of https://github.com/rust-lang/rust-clippy/pull/9828 to support also async methods.

changelog: [`cognitive_complexity`] support async method

r? `@Alexendoo`
This commit is contained in:
bors 2022-11-12 20:54:39 +00:00
commit bb326e761b
3 changed files with 22 additions and 2 deletions

View file

@ -1901,7 +1901,11 @@ pub fn if_sequence<'tcx>(mut expr: &'tcx Expr<'tcx>) -> (Vec<&'tcx Expr<'tcx>>,
/// Checks if the given function kind is an async function.
pub fn is_async_fn(kind: FnKind<'_>) -> bool {
matches!(kind, FnKind::ItemFn(_, _, header) if header.asyncness == IsAsync::Async)
match kind {
FnKind::ItemFn(_, _, header) => header.asyncness == IsAsync::Async,
FnKind::Method(_, sig) => sig.header.asyncness == IsAsync::Async,
FnKind::Closure => false,
}
}
/// Peels away all the compiler generated code surrounding the body of an async function,

View file

@ -400,4 +400,12 @@ mod issue9300 {
let a = 0;
if a == 0 {}
}
pub struct S;
impl S {
pub async fn async_method() {
let a = 0;
if a == 0 {}
}
}
}

View file

@ -143,5 +143,13 @@ LL | async fn a() {
|
= help: you could split it up into multiple smaller functions
error: aborting due to 18 previous errors
error: the function has a cognitive complexity of (2/1)
--> $DIR/cognitive_complexity.rs:406:22
|
LL | pub async fn async_method() {
| ^^^^^^^^^^^^
|
= help: you could split it up into multiple smaller functions
error: aborting due to 19 previous errors