Skip to content

Commit 59f195a

Browse files
Fix invalid shorthand initialization diagnostic for tuple structs
1 parent 36353bb commit 59f195a

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

crates/ra_ide/src/diagnostics.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,12 @@ fn check_struct_shorthand_initialization(
187187
if let (Some(name_ref), Some(expr)) = (record_field.name_ref(), record_field.expr()) {
188188
let field_name = name_ref.syntax().text().to_string();
189189
let field_expr = expr.syntax().text().to_string();
190-
if field_name == field_expr {
190+
let field_name_is_tup_index = name_ref
191+
.syntax()
192+
.first_token()
193+
.map(|token| token.kind().is_literal())
194+
.unwrap_or(false);
195+
if field_name == field_expr && !field_name_is_tup_index {
191196
let mut edit_builder = TextEditBuilder::default();
192197
edit_builder.delete(record_field.syntax().text_range());
193198
edit_builder.insert(record_field.syntax().text_range().start(), field_name);
@@ -719,6 +724,18 @@ mod tests {
719724
"#,
720725
check_struct_shorthand_initialization,
721726
);
727+
check_not_applicable(
728+
r#"
729+
struct A(usize);
730+
731+
fn main() {
732+
A {
733+
0: 0
734+
}
735+
}
736+
"#,
737+
check_struct_shorthand_initialization,
738+
);
722739

723740
check_apply(
724741
r#"

0 commit comments

Comments
 (0)