mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-14 17:07:26 +00:00
Auto merge of #13647 - nyz93:fix/tuple-to-named-struct, r=Veykril
fix: tuple to named struct inside macros seems to fix #13634
This commit is contained in:
commit
e668eca632
1 changed files with 42 additions and 1 deletions
|
@ -168,7 +168,7 @@ fn edit_struct_references(
|
|||
let arg_list = call_expr.syntax().descendants().find_map(ast::ArgList::cast)?;
|
||||
|
||||
edit.replace(
|
||||
call_expr.syntax().text_range(),
|
||||
ctx.sema.original_range(&node).range,
|
||||
ast::make::record_expr(
|
||||
path,
|
||||
ast::make::record_expr_field_list(arg_list.args().zip(names).map(
|
||||
|
@ -249,6 +249,24 @@ mod tests {
|
|||
);
|
||||
check_assist_not_applicable(convert_tuple_struct_to_named_struct, r#"struct Foo$0;"#);
|
||||
}
|
||||
#[test]
|
||||
fn convert_in_macro_args() {
|
||||
check_assist(
|
||||
convert_tuple_struct_to_named_struct,
|
||||
r#"
|
||||
macro_rules! foo {($i:expr) => {$i} }
|
||||
struct T$0(u8);
|
||||
fn test() {
|
||||
foo!(T(1));
|
||||
}"#,
|
||||
r#"
|
||||
macro_rules! foo {($i:expr) => {$i} }
|
||||
struct T { field1: u8 }
|
||||
fn test() {
|
||||
foo!(T { field1: 1 });
|
||||
}"#,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn convert_simple_struct() {
|
||||
|
@ -554,6 +572,29 @@ where
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn convert_variant_in_macro_args() {
|
||||
check_assist(
|
||||
convert_tuple_struct_to_named_struct,
|
||||
r#"
|
||||
macro_rules! foo {($i:expr) => {$i} }
|
||||
enum T {
|
||||
V$0(u8)
|
||||
}
|
||||
fn test() {
|
||||
foo!(T::V(1));
|
||||
}"#,
|
||||
r#"
|
||||
macro_rules! foo {($i:expr) => {$i} }
|
||||
enum T {
|
||||
V { field1: u8 }
|
||||
}
|
||||
fn test() {
|
||||
foo!(T::V { field1: 1 });
|
||||
}"#,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn convert_simple_variant() {
|
||||
check_assist(
|
||||
|
|
Loading…
Reference in a new issue