From 7b9553a7039a5307b8c436d4128e08b74f75c55b Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Fri, 24 Apr 2020 21:46:18 +0200 Subject: [PATCH] Don't omit methods with self from path completion --- .../src/completion/complete_qualified_path.rs | 44 ++++++++++++++++--- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/crates/ra_ide/src/completion/complete_qualified_path.rs b/crates/ra_ide/src/completion/complete_qualified_path.rs index 9f795e4414..5a5139e14c 100644 --- a/crates/ra_ide/src/completion/complete_qualified_path.rs +++ b/crates/ra_ide/src/completion/complete_qualified_path.rs @@ -57,9 +57,7 @@ pub(super) fn complete_qualified_path(acc: &mut Completions, ctx: &CompletionCon } match item { hir::AssocItem::Function(func) => { - if !func.has_self_param(ctx.db) { - acc.add_function(ctx, func, None); - } + acc.add_function(ctx, func, None); } hir::AssocItem::Const(ct) => acc.add_const(ctx, ct), hir::AssocItem::TypeAlias(ty) => acc.add_type_alias(ctx, ty), @@ -86,9 +84,7 @@ pub(super) fn complete_qualified_path(acc: &mut Completions, ctx: &CompletionCon } match item { hir::AssocItem::Function(func) => { - if !func.has_self_param(ctx.db) { - acc.add_function(ctx, func, None); - } + acc.add_function(ctx, func, None); } hir::AssocItem::Const(ct) => acc.add_const(ctx, ct), hir::AssocItem::TypeAlias(ty) => acc.add_type_alias(ctx, ty), @@ -482,6 +478,42 @@ mod tests { ); } + #[test] + fn completes_struct_associated_method_with_self() { + assert_debug_snapshot!( + do_reference_completion( + " + //- /lib.rs + /// A Struct + struct S; + + impl S { + /// An associated method + fn m(&self) { } + } + + fn foo() { let _ = S::<|> } + " + ), + @r###" + [ + CompletionItem { + label: "m()", + source_range: [105; 105), + delete: [105; 105), + insert: "m()$0", + kind: Method, + lookup: "m", + detail: "fn m(&self)", + documentation: Documentation( + "An associated method", + ), + }, + ] + "### + ); + } + #[test] fn completes_struct_associated_const() { assert_debug_snapshot!(