mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 05:23:24 +00:00
Merge #5295
5295: Complete params in nested fns r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
commit
5a195001d7
1 changed files with 16 additions and 5 deletions
|
@ -18,16 +18,12 @@ pub(super) fn complete_fn_param(acc: &mut Completions, ctx: &CompletionContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut params = FxHashMap::default();
|
let mut params = FxHashMap::default();
|
||||||
let mut me = None;
|
let me = ctx.token.ancestors().find_map(ast::FnDef::cast);
|
||||||
for node in ctx.token.parent().ancestors() {
|
for node in ctx.token.parent().ancestors() {
|
||||||
let items = match_ast! {
|
let items = match_ast! {
|
||||||
match node {
|
match node {
|
||||||
ast::SourceFile(it) => it.items(),
|
ast::SourceFile(it) => it.items(),
|
||||||
ast::ItemList(it) => it.items(),
|
ast::ItemList(it) => it.items(),
|
||||||
ast::FnDef(it) => {
|
|
||||||
me = Some(it);
|
|
||||||
continue;
|
|
||||||
},
|
|
||||||
_ => continue,
|
_ => continue,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -43,6 +39,7 @@ pub(super) fn complete_fn_param(acc: &mut Completions, ctx: &CompletionContext)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
params
|
params
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.filter_map(|(label, param)| {
|
.filter_map(|(label, param)| {
|
||||||
|
@ -111,4 +108,18 @@ pub(crate) trait SourceRoot {
|
||||||
"#]],
|
"#]],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn completes_param_in_inner_function() {
|
||||||
|
check(
|
||||||
|
r#"
|
||||||
|
fn outer(text: String) {
|
||||||
|
fn inner(<|>)
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
expect![[r#"
|
||||||
|
bn text: String
|
||||||
|
"#]],
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue