Skip to content

Commit

Permalink
Auto merge of #13508 - koka831:fix/13492, r=jonas-schievink
Browse files Browse the repository at this point in the history
fix: async trait method for `unnecessary_async`

Fix #13492
  • Loading branch information
bors committed Nov 1, 2022
2 parents d90cb1e + cf90e4f commit a8e97bc
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions crates/ide-assists/src/handlers/unnecessary_async.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ pub(crate) fn unnecessary_async(acc: &mut Assists, ctx: &AssistContext<'_>) -> O
if function.body()?.syntax().descendants().find_map(ast::AwaitExpr::cast).is_some() {
return None;
}
// Do nothing if the method is a member of trait.
if let Some(impl_) = function.syntax().ancestors().nth(2).and_then(ast::Impl::cast) {
if let Some(_) = impl_.trait_() {
return None;
}
}

// Remove the `async` keyword plus whitespace after it, if any.
let async_range = {
Expand Down Expand Up @@ -254,4 +260,18 @@ pub async fn f(s: &S) { s.f2() }"#,
fn does_not_apply_when_not_on_prototype() {
check_assist_not_applicable(unnecessary_async, "pub async fn f() { $0f2() }")
}

#[test]
fn does_not_apply_on_async_trait_method() {
check_assist_not_applicable(
unnecessary_async,
r#"
trait Trait {
async fn foo();
}
impl Trait for () {
$0async fn foo() {}
}"#,
);
}
}

0 comments on commit a8e97bc

Please sign in to comment.