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 | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/crates/ide-completion/src/completions/fn_param.rs b/crates/ide-completion/src/completions/fn_param.rs index fb78386976..34d25c9c67 100644 --- a/crates/ide-completion/src/completions/fn_param.rs +++ b/crates/ide-completion/src/completions/fn_param.rs @@ -2,6 +2,7 @@ use hir::HirDisplay; use ide_db::FxHashMap; +use itertools::Either; use syntax::{ AstNode, Direction, SyntaxKind, TextRange, TextSize, algo, ast::{self, HasModuleItem}, @@ -24,8 +25,8 @@ pub(crate) fn complete_fn_param( ctx: &CompletionContext<'_>, pattern_ctx: &PatternContext, ) -> Option<()> { - let (ParamContext { param_list, kind, .. }, impl_) = match pattern_ctx { - PatternContext { param_ctx: Some(kind), impl_, .. } => (kind, impl_), + let (ParamContext { param_list, kind, .. }, impl_or_trait) = match pattern_ctx { + PatternContext { param_ctx: Some(kind), impl_or_trait, .. } => (kind, impl_or_trait), _ => return None, }; @@ -45,7 +46,7 @@ pub(crate) fn complete_fn_param( match kind { ParamKind::Function(function) => { - fill_fn_params(ctx, function, param_list, impl_, add_new_item_to_acc); + fill_fn_params(ctx, function, param_list, impl_or_trait, add_new_item_to_acc); } ParamKind::Closure(closure) => { let stmt_list = closure.syntax().ancestors().find_map(ast::StmtList::cast)?; @@ -62,7 +63,7 @@ fn fill_fn_params( ctx: &CompletionContext<'_>, function: &ast::Fn, param_list: &ast::ParamList, - impl_: &Option<ast::Impl>, + impl_or_trait: &Option<Either<ast::Impl, ast::Trait>>, mut add_new_item_to_acc: impl FnMut(&str), ) { let mut file_params = FxHashMap::default(); @@ -107,7 +108,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.token.text_range().start(), param_list, impl_) { + if should_add_self_completions(ctx.token.text_range().start(), param_list, impl_or_trait) { self_completion_items.into_iter().for_each(&mut add_new_item_to_acc); } @@ -161,9 +162,9 @@ fn remove_duplicated( fn should_add_self_completions( cursor: TextSize, param_list: &ast::ParamList, - impl_: &Option<ast::Impl>, + impl_or_trait: &Option<Either<ast::Impl, ast::Trait>>, ) -> bool { - if impl_.is_none() || param_list.self_param().is_some() { + if impl_or_trait.is_none() || param_list.self_param().is_some() { return false; } match param_list.params().next() { |