Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/lib.rs')
| -rw-r--r-- | crates/ide-completion/src/lib.rs | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/crates/ide-completion/src/lib.rs b/crates/ide-completion/src/lib.rs index 5e9923eb0f..5a3ddeea25 100644 --- a/crates/ide-completion/src/lib.rs +++ b/crates/ide-completion/src/lib.rs @@ -165,6 +165,13 @@ pub fn completions( { let acc = &mut completions; + let mut complete_patterns = |pattern_ctx| { + completions::flyimport::import_on_the_fly_pat(acc, ctx, pattern_ctx); + completions::fn_param::complete_fn_param(acc, ctx, pattern_ctx); + completions::pattern::complete_pattern(acc, ctx, pattern_ctx); + completions::record::complete_record_pattern_fields(acc, ctx, pattern_ctx); + }; + match &ctx.ident_ctx { IdentContext::Name(NameContext { name, kind }) => match kind { NameKind::Const => { @@ -173,12 +180,7 @@ pub fn completions( NameKind::Function => { completions::item_list::trait_impl::complete_trait_impl_fn(acc, ctx, name); } - NameKind::IdentPat(pattern_ctx) => { - completions::flyimport::import_on_the_fly_pat(acc, ctx, pattern_ctx); - completions::fn_param::complete_fn_param(acc, ctx, pattern_ctx); - completions::pattern::complete_pattern(acc, ctx, pattern_ctx); - completions::record::complete_record_pattern_fields(acc, ctx, pattern_ctx); - } + NameKind::IdentPat(pattern_ctx) => complete_patterns(pattern_ctx), NameKind::Module(mod_under_caret) => { completions::mod_::complete_mod(acc, ctx, mod_under_caret); } @@ -239,12 +241,7 @@ pub fn completions( record_expr, ); } - NameRefKind::Pattern(pattern_ctx) => { - completions::flyimport::import_on_the_fly_pat(acc, ctx, pattern_ctx); - completions::fn_param::complete_fn_param(acc, ctx, pattern_ctx); - completions::pattern::complete_pattern(acc, ctx, pattern_ctx); - completions::record::complete_record_pattern_fields(acc, ctx, pattern_ctx); - } + NameRefKind::Pattern(pattern_ctx) => complete_patterns(pattern_ctx), }, IdentContext::Lifetime(lifetime_ctx) => { completions::lifetime::complete_label(acc, ctx, lifetime_ctx); |