Skip to content

Commit 148ef9e

Browse files
Merge pull request #22067 from A4-Tacks/let-with-iflet-parens-record
fix: add parentheses on record expr for replace_let_with_if_let
2 parents 0640460 + 05ada7a commit 148ef9e

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

crates/ide-assists/src/handlers/replace_let_with_if_let.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ pub(crate) fn replace_let_with_if_let(acc: &mut Assists, ctx: &AssistContext<'_>
8888
fn let_expr_needs_paren(expr: &ast::Expr) -> bool {
8989
let make = SyntaxFactory::without_mappings();
9090
let fake_expr_let = make.expr_let(make.tuple_pat(None).into(), make.expr_unit());
91+
let fake_if = make.expr_if(fake_expr_let.into(), make.expr_empty_block(), None);
92+
let Some(ast::Expr::LetExpr(fake_expr_let)) = fake_if.condition() else {
93+
stdx::never!();
94+
return false;
95+
};
9196
let Some(fake_expr) = fake_expr_let.expr() else {
9297
stdx::never!();
9398
return false;
@@ -182,6 +187,24 @@ fn main() {
182187
)
183188
}
184189

190+
#[test]
191+
fn replace_let_record_expr() {
192+
check_assist(
193+
replace_let_with_if_let,
194+
r"
195+
fn main() {
196+
$0let x = Foo { x };
197+
}
198+
",
199+
r"
200+
fn main() {
201+
if let x = (Foo { x }) {
202+
}
203+
}
204+
",
205+
)
206+
}
207+
185208
#[test]
186209
fn replace_let_else() {
187210
check_assist(

0 commit comments

Comments
 (0)