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 | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/crates/ide-completion/src/completions/dot.rs b/crates/ide-completion/src/completions/dot.rs index af0f38a3d8..439745ffba 100644 --- a/crates/ide-completion/src/completions/dot.rs +++ b/crates/ide-completion/src/completions/dot.rs @@ -9,8 +9,15 @@ use crate::{ /// Complete dot accesses, i.e. fields or methods. pub(crate) fn complete_dot(acc: &mut Completions, ctx: &CompletionContext) { - let dot_receiver = match ctx.dot_receiver() { - Some(expr) => expr, + let (dot_access, dot_receiver) = match &ctx.nameref_ctx { + Some(NameRefContext { + dot_access: + Some( + access @ (DotAccess::Method { receiver: Some(receiver), .. } + | DotAccess::Field { receiver: Some(receiver), .. }), + ), + .. + }) => (access, receiver), _ => return complete_undotted_self(acc, ctx), }; @@ -19,10 +26,7 @@ pub(crate) fn complete_dot(acc: &mut Completions, ctx: &CompletionContext) { _ => return, }; - if matches!( - ctx.nameref_ctx, - Some(NameRefContext { dot_access: Some(DotAccess::Method { .. }), .. }), - ) { + if let DotAccess::Method { .. } = dot_access { cov_mark::hit!(test_no_struct_field_completion_for_method_call); } else { complete_fields( |