diff options
Diffstat (limited to 'crates/ra_ide_api/src/completion/complete_dot.rs')
-rw-r--r-- | crates/ra_ide_api/src/completion/complete_dot.rs | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/crates/ra_ide_api/src/completion/complete_dot.rs b/crates/ra_ide_api/src/completion/complete_dot.rs index 7135f481d..fe32e7366 100644 --- a/crates/ra_ide_api/src/completion/complete_dot.rs +++ b/crates/ra_ide_api/src/completion/complete_dot.rs | |||
@@ -58,15 +58,21 @@ fn complete_fields(acc: &mut Completions, ctx: &CompletionContext, receiver: Ty) | |||
58 | 58 | ||
59 | fn complete_methods(acc: &mut Completions, ctx: &CompletionContext, receiver: Ty) { | 59 | fn complete_methods(acc: &mut Completions, ctx: &CompletionContext, receiver: Ty) { |
60 | let mut seen_methods = FxHashSet::default(); | 60 | let mut seen_methods = FxHashSet::default(); |
61 | ctx.analyzer.iterate_method_candidates(ctx.db, receiver, None, |_ty, item| { | 61 | ctx.analyzer.iterate_method_candidates( |
62 | if let hir::AssocItem::Function(func) = item { | 62 | ctx.db, |
63 | let data = func.data(ctx.db); | 63 | receiver, |
64 | if data.has_self_param() && seen_methods.insert(data.name().clone()) { | 64 | None, |
65 | acc.add_function(ctx, func); | 65 | hir::LookupMode::MethodCall, |
66 | |_ty, item| { | ||
67 | if let hir::AssocItem::Function(func) = item { | ||
68 | let data = func.data(ctx.db); | ||
69 | if data.has_self_param() && seen_methods.insert(data.name().clone()) { | ||
70 | acc.add_function(ctx, func); | ||
71 | } | ||
66 | } | 72 | } |
67 | } | 73 | None::<()> |
68 | None::<()> | 74 | }, |
69 | }); | 75 | ); |
70 | } | 76 | } |
71 | 77 | ||
72 | #[cfg(test)] | 78 | #[cfg(test)] |