]> git.lizzy.rs Git - rust.git/blobdiff - crates/ide_assists/src/handlers/replace_let_with_if_let.rs
Merge #11481
[rust.git] / crates / ide_assists / src / handlers / replace_let_with_if_let.rs
index 19abb129efce5c99a0b0951bba6dd39a77004b3e..a5fa8a110d31eed11ca4b4f0b9cad6b0a46fc8bc 100644 (file)
@@ -38,7 +38,7 @@
 // ```
 pub(crate) fn replace_let_with_if_let(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
     let let_kw = ctx.find_token_syntax_at_offset(T![let])?;
-    let let_stmt = let_kw.ancestors().find_map(ast::LetStmt::cast)?;
+    let let_stmt = let_kw.parent().and_then(ast::LetStmt::cast)?;
     let init = let_stmt.initializer()?;
     let original_pat = let_stmt.pat()?;
 
@@ -62,7 +62,7 @@ pub(crate) fn replace_let_with_if_let(acc: &mut Assists, ctx: &AssistContext) ->
 
             let block =
                 make::ext::empty_block_expr().indent(IndentLevel::from_node(let_stmt.syntax()));
-            let if_ = make::expr_if(make::condition(init, Some(pat)), block, None);
+            let if_ = make::expr_if(make::expr_let(pat, init).into(), block, None);
             let stmt = make::expr_stmt(if_);
 
             edit.replace_ast(ast::Stmt::from(let_stmt), ast::Stmt::from(stmt));