Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/dot.rs')
| -rw-r--r-- | crates/ide-completion/src/completions/dot.rs | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/crates/ide-completion/src/completions/dot.rs b/crates/ide-completion/src/completions/dot.rs index da26c2ad68..a8a57c0c7d 100644 --- a/crates/ide-completion/src/completions/dot.rs +++ b/crates/ide-completion/src/completions/dot.rs @@ -3,9 +3,7 @@ use ide_db::FxHashSet; use crate::{ - context::{ - CompletionContext, DotAccess, DotAccessKind, PathCompletionCtx, PathKind, Qualified, - }, + context::{CompletionContext, DotAccess, DotAccessKind, ExprCtx, PathCompletionCtx, Qualified}, CompletionItem, CompletionItemKind, Completions, }; @@ -42,16 +40,22 @@ pub(crate) fn complete_undotted_self( acc: &mut Completions, ctx: &CompletionContext, path_ctx: &PathCompletionCtx, + expr_ctx: &ExprCtx, ) { if !ctx.config.enable_self_on_the_fly { return; } - let self_param = match path_ctx { - PathCompletionCtx { - qualified: Qualified::No, - kind: PathKind::Expr { self_param: Some(self_param), .. }, - .. - } if path_ctx.is_trivial_path() && ctx.qualifier_ctx.none() => self_param, + if !path_ctx.is_trivial_path() { + return; + } + if !ctx.qualifier_ctx.none() { + return; + } + if !matches!(path_ctx.qualified, Qualified::No) { + return; + } + let self_param = match expr_ctx { + ExprCtx { self_param: Some(self_param), .. } => self_param, _ => return, }; |