Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/pattern.rs')
-rw-r--r--crates/ide-completion/src/completions/pattern.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/crates/ide-completion/src/completions/pattern.rs b/crates/ide-completion/src/completions/pattern.rs
index 60cfb7e5a8..8f38e02ed7 100644
--- a/crates/ide-completion/src/completions/pattern.rs
+++ b/crates/ide-completion/src/completions/pattern.rs
@@ -1,6 +1,7 @@
//! Completes constants and paths in unqualified patterns.
use hir::{db::DefDatabase, AssocItem, ScopeDef};
+use ide_db::syntax_helpers::suggest_name;
use syntax::ast::Pat;
use crate::{
@@ -45,6 +46,19 @@ pub(crate) fn complete_pattern(
return;
}
+ // Suggest name only in let-stmt and fn param
+ if pattern_ctx.should_suggest_name {
+ let mut name_generator = suggest_name::NameGenerator::new();
+ if let Some(suggested) = ctx
+ .expected_type
+ .as_ref()
+ .map(|ty| ty.strip_references())
+ .and_then(|ty| name_generator.for_type(&ty, ctx.db, ctx.edition))
+ {
+ acc.suggest_name(ctx, &suggested);
+ }
+ }
+
let refutable = pattern_ctx.refutability == PatternRefutability::Refutable;
let single_variant_enum = |enum_: hir::Enum| ctx.db.enum_data(enum_.into()).variants.len() == 1;