aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/completion/complete_dot.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide_api/src/completion/complete_dot.rs')
-rw-r--r--crates/ra_ide_api/src/completion/complete_dot.rs22
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
59fn complete_methods(acc: &mut Completions, ctx: &CompletionContext, receiver: Ty) { 59fn 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)]