about summary refs log tree commit diff
diff options
context:
space:
mode:
authorYunfei <i.heyunfei@gmail.com>2024-07-29 15:55:21 +0800
committerYunfei <i.heyunfei@gmail.com>2024-07-29 15:55:21 +0800
commit55c703bca7b8d520c7550768930ec7637942dfb7 (patch)
tree1899006b5668545c96bed22a79ae9146156f90ca
parent48fb66be7a657839bdf8f42ae06fc17893c2d162 (diff)
downloadrust-55c703bca7b8d520c7550768930ec7637942dfb7.tar.gz
rust-55c703bca7b8d520c7550768930ec7637942dfb7.zip
feat(ide-completion): explictly show `async` keyword on `impl trait`
-rw-r--r--src/tools/rust-analyzer/crates/ide-completion/src/completions/item_list/trait_impl.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/completions/item_list/trait_impl.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/item_list/trait_impl.rs
index f9dc62562f8..4a1f985b307 100644
--- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/item_list/trait_impl.rs
+++ b/src/tools/rust-analyzer/crates/ide-completion/src/completions/item_list/trait_impl.rs
@@ -180,8 +180,10 @@ fn add_function_impl(
 ) {
     let fn_name = func.name(ctx.db);
 
+    let is_async = func.is_async(ctx.db);
     let label = format_smolstr!(
-        "fn {}({})",
+        "{}fn {}({})",
+        if is_async { "async " } else { "" },
         fn_name.display(ctx.db),
         if func.assoc_fn_params(ctx.db).is_empty() { "" } else { ".." }
     );
@@ -193,7 +195,7 @@ fn add_function_impl(
     });
 
     let mut item = CompletionItem::new(completion_kind, replacement_range, label);
-    item.lookup_by(format!("fn {}", fn_name.display(ctx.db)))
+    item.lookup_by(format!("{}fn {}", if is_async { "async "} else { "" },fn_name.display(ctx.db)))
         .set_documentation(func.docs(ctx.db))
         .set_relevance(CompletionRelevance { is_item_from_trait: true, ..Default::default() });