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 | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/crates/ide-completion/src/completions/dot.rs b/crates/ide-completion/src/completions/dot.rs index bdafdf4152..a315d616d5 100644 --- a/crates/ide-completion/src/completions/dot.rs +++ b/crates/ide-completion/src/completions/dot.rs @@ -4,21 +4,16 @@ use ide_db::FxHashSet; use crate::{ context::{ - CompletionContext, DotAccess, DotAccessKind, NameRefContext, NameRefKind, - PathCompletionCtx, PathKind, Qualified, + CompletionContext, DotAccess, DotAccessKind, PathCompletionCtx, PathKind, Qualified, }, CompletionItem, CompletionItemKind, Completions, }; /// Complete dot accesses, i.e. fields or methods. -pub(crate) fn complete_dot(acc: &mut Completions, ctx: &CompletionContext) { - let (dot_access, receiver_ty) = match ctx.nameref_ctx() { - Some(NameRefContext { - kind: - Some(NameRefKind::DotAccess(access @ DotAccess { receiver_ty: Some(receiver_ty), .. })), - .. - }) => (access, &receiver_ty.original), - _ => return complete_undotted_self(acc, ctx), +pub(crate) fn complete_dot(acc: &mut Completions, ctx: &CompletionContext, dot_access: &DotAccess) { + let receiver_ty = match dot_access { + DotAccess { receiver_ty: Some(receiver_ty), .. } => &receiver_ty.original, + _ => return, }; // Suggest .await syntax for types that implement Future trait @@ -43,18 +38,17 @@ pub(crate) fn complete_dot(acc: &mut Completions, ctx: &CompletionContext) { complete_methods(ctx, &receiver_ty, |func| acc.add_method(ctx, func, None, None)); } -fn complete_undotted_self(acc: &mut Completions, ctx: &CompletionContext) { +pub(crate) fn complete_undotted_self( + acc: &mut Completions, + ctx: &CompletionContext, + path_ctx: &PathCompletionCtx, +) { if !ctx.config.enable_self_on_the_fly { return; } - match ctx.path_context() { - Some( - path_ctx @ PathCompletionCtx { - qualified: Qualified::No, - kind: PathKind::Expr { .. }, - .. - }, - ) if path_ctx.is_trivial_path() && ctx.qualifier_ctx.none() => {} + match path_ctx { + PathCompletionCtx { qualified: Qualified::No, kind: PathKind::Expr { .. }, .. } + if path_ctx.is_trivial_path() && ctx.qualifier_ctx.none() => {} _ => return, } |