Skip to content

Commit

Permalink
Auto merge of rust-lang#13647 - nyz93:fix/tuple-to-named-struct, r=Ve…
Browse files Browse the repository at this point in the history
…ykril

fix: tuple to named struct inside macros

seems to fix rust-lang#13634
  • Loading branch information
bors committed Nov 25, 2022
2 parents 99daf23 + 23cfe07 commit e668eca
Showing 1 changed file with 42 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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() {
Expand Down Expand Up @@ -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(
Expand Down

0 comments on commit e668eca

Please sign in to comment.