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.rs16
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(