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:
bors 2022-11-25 09:41:21 +00:00
commit e668eca632

View file

@ -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(