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.rs | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/crates/ide-completion/src/completions/pattern.rs b/crates/ide-completion/src/completions/pattern.rs index b032bf03aa..1ecae1c484 100644 --- a/crates/ide-completion/src/completions/pattern.rs +++ b/crates/ide-completion/src/completions/pattern.rs @@ -5,22 +5,16 @@ use ide_db::FxHashSet; use syntax::ast::Pat; use crate::{ - context::{PathCompletionCtx, PatternRefutability, Qualified}, + context::{PathCompletionCtx, PathKind, PatternContext, PatternRefutability, Qualified}, CompletionContext, Completions, }; /// Completes constants and paths in unqualified patterns. -pub(crate) fn complete_pattern(acc: &mut Completions, ctx: &CompletionContext) { - let patctx = match &ctx.pattern_ctx { - Some(ctx) => ctx, - _ => return, - }; - - if let Some(path_ctx) = ctx.path_context() { - pattern_path_completion(acc, ctx, path_ctx); - return; - } - +pub(crate) fn complete_pattern( + acc: &mut Completions, + ctx: &CompletionContext, + patctx: &PatternContext, +) { match patctx.parent_pat.as_ref() { Some(Pat::RangePat(_) | Pat::BoxPat(_)) => (), Some(Pat::RefPat(r)) => { @@ -108,11 +102,14 @@ pub(crate) fn complete_pattern(acc: &mut Completions, ctx: &CompletionContext) { }); } -fn pattern_path_completion( +pub(crate) fn pattern_path_completion( acc: &mut Completions, ctx: &CompletionContext, - PathCompletionCtx { qualified, .. }: &PathCompletionCtx, + PathCompletionCtx { qualified, kind, .. }: &PathCompletionCtx, ) { + if !matches!(kind, PathKind::Pat) { + return; + } match qualified { Qualified::With { resolution: Some(resolution), is_super_chain, .. } => { if *is_super_chain { |