mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-24 15:54:15 +00:00
complete pattern args based on type name
This commit is contained in:
parent
ba9aed19c7
commit
c735b979ed
@ -3,7 +3,7 @@
|
||||
use hir::{db::HirDatabase, AsAssocItem, HirDisplay};
|
||||
use ide_db::{SnippetCap, SymbolKind};
|
||||
use itertools::Itertools;
|
||||
use stdx::format_to;
|
||||
use stdx::{format_to, to_lower_snake_case};
|
||||
use syntax::SmolStr;
|
||||
|
||||
use crate::{
|
||||
@ -135,7 +135,15 @@ pub(super) fn add_call_parens<'b>(
|
||||
let ref_ = ref_of_param(ctx, text, param.ty());
|
||||
f(&format_args!("${{{}:{}{}}}", index + offset, ref_, text))
|
||||
}
|
||||
None => f(&format_args!("${{{}:_}}", index + offset,)),
|
||||
None => {
|
||||
let name = match param.ty().as_adt() {
|
||||
Some(adt) => {
|
||||
to_lower_snake_case(&adt.name(ctx.db).as_text().unwrap())
|
||||
}
|
||||
None => "_".to_string(),
|
||||
};
|
||||
f(&format_args!("${{{}:{}}}", index + offset, name))
|
||||
}
|
||||
}
|
||||
});
|
||||
match self_param {
|
||||
@ -516,6 +524,39 @@ fn take_mutably(mut x: &i32) {}
|
||||
fn main() {
|
||||
take_mutably(${1:x})$0
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn complete_pattern_args_with_type_name_if_adt() {
|
||||
check_edit(
|
||||
"qux",
|
||||
r#"
|
||||
struct Foo {
|
||||
bar: i32
|
||||
}
|
||||
|
||||
fn qux(Foo { bar }: Foo) {
|
||||
println!("{}", bar);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
qu$0
|
||||
}
|
||||
"#,
|
||||
r#"
|
||||
struct Foo {
|
||||
bar: i32
|
||||
}
|
||||
|
||||
fn qux(Foo { bar }: Foo) {
|
||||
println!("{}", bar);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
qux(${1:foo})$0
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user