diff options
Diffstat (limited to 'crates/ra_ide_api/src/completion/complete_fn_param.rs')
-rw-r--r-- | crates/ra_ide_api/src/completion/complete_fn_param.rs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/crates/ra_ide_api/src/completion/complete_fn_param.rs b/crates/ra_ide_api/src/completion/complete_fn_param.rs index 6639b6fff..3e936e3ec 100644 --- a/crates/ra_ide_api/src/completion/complete_fn_param.rs +++ b/crates/ra_ide_api/src/completion/complete_fn_param.rs | |||
@@ -1,7 +1,6 @@ | |||
1 | use ra_syntax::{ | 1 | //! FIXME: write short doc here |
2 | algo::visit::{visitor_ctx, VisitorCtx}, | 2 | |
3 | ast, AstNode, | 3 | use ra_syntax::{ast, match_ast, AstNode}; |
4 | }; | ||
5 | use rustc_hash::FxHashMap; | 4 | use rustc_hash::FxHashMap; |
6 | 5 | ||
7 | use crate::completion::{CompletionContext, CompletionItem, CompletionKind, Completions}; | 6 | use crate::completion::{CompletionContext, CompletionItem, CompletionKind, Completions}; |
@@ -17,10 +16,13 @@ pub(super) fn complete_fn_param(acc: &mut Completions, ctx: &CompletionContext) | |||
17 | 16 | ||
18 | let mut params = FxHashMap::default(); | 17 | let mut params = FxHashMap::default(); |
19 | for node in ctx.token.parent().ancestors() { | 18 | for node in ctx.token.parent().ancestors() { |
20 | let _ = visitor_ctx(&mut params) | 19 | match_ast! { |
21 | .visit::<ast::SourceFile, _>(process) | 20 | match node { |
22 | .visit::<ast::ItemList, _>(process) | 21 | ast::SourceFile(it) => { process(it, &mut params) }, |
23 | .accept(&node); | 22 | ast::ItemList(it) => { process(it, &mut params) }, |
23 | _ => (), | ||
24 | } | ||
25 | } | ||
24 | } | 26 | } |
25 | params | 27 | params |
26 | .into_iter() | 28 | .into_iter() |