Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/fn_param.rs')
| -rw-r--r-- | crates/ide-completion/src/completions/fn_param.rs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/crates/ide-completion/src/completions/fn_param.rs b/crates/ide-completion/src/completions/fn_param.rs index a62b966e01..94e2f489f5 100644 --- a/crates/ide-completion/src/completions/fn_param.rs +++ b/crates/ide-completion/src/completions/fn_param.rs @@ -24,8 +24,8 @@ pub(crate) fn complete_fn_param( ctx: &CompletionContext, pattern_ctx: &PatternContext, ) -> Option<()> { - let (param_list, _, param_kind) = match pattern_ctx { - PatternContext { param_ctx: Some(kind), .. } => kind, + let ((param_list, _, param_kind), impl_) = match pattern_ctx { + PatternContext { param_ctx: Some(kind), impl_, .. } => (kind, impl_), _ => return None, }; @@ -45,7 +45,7 @@ pub(crate) fn complete_fn_param( match param_kind { ParamKind::Function(function) => { - fill_fn_params(ctx, function, param_list, add_new_item_to_acc); + fill_fn_params(ctx, function, param_list, impl_, add_new_item_to_acc); } ParamKind::Closure(closure) => { let stmt_list = closure.syntax().ancestors().find_map(ast::StmtList::cast)?; @@ -62,6 +62,7 @@ fn fill_fn_params( ctx: &CompletionContext, function: &ast::Fn, param_list: &ast::ParamList, + impl_: &Option<ast::Impl>, mut add_new_item_to_acc: impl FnMut(&str), ) { let mut file_params = FxHashMap::default(); @@ -104,7 +105,7 @@ fn fill_fn_params( } remove_duplicated(&mut file_params, param_list.params()); let self_completion_items = ["self", "&self", "mut self", "&mut self"]; - if should_add_self_completions(ctx, param_list) { + if should_add_self_completions(param_list, impl_) { self_completion_items.into_iter().for_each(|self_item| add_new_item_to_acc(self_item)); } @@ -155,11 +156,10 @@ fn remove_duplicated( }) } -fn should_add_self_completions(ctx: &CompletionContext, param_list: &ast::ParamList) -> bool { - let inside_impl = ctx.impl_def.is_some(); +fn should_add_self_completions(param_list: &ast::ParamList, impl_: &Option<ast::Impl>) -> bool { let no_params = param_list.params().next().is_none() && param_list.self_param().is_none(); - inside_impl && no_params + impl_.is_some() && no_params } fn comma_wrapper(ctx: &CompletionContext) -> Option<(impl Fn(&str) -> String, TextRange)> { |