From 539b0c258226cae1b2fa14bfc2397de2c69bf4ef Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 21 Dec 2021 14:03:59 +0100 Subject: [PATCH] fix: Fix inline local assist not working in let stmt initializer --- .../src/handlers/inline_local_variable.rs | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/crates/ide_assists/src/handlers/inline_local_variable.rs b/crates/ide_assists/src/handlers/inline_local_variable.rs index 8e528c8e395..1fce654df28 100644 --- a/crates/ide_assists/src/handlers/inline_local_variable.rs +++ b/crates/ide_assists/src/handlers/inline_local_variable.rs @@ -36,10 +36,10 @@ pub(crate) fn inline_local_variable(acc: &mut Assists, ctx: &AssistContext) -> O let file_id = ctx.file_id(); let range = ctx.selection_trimmed(); let InlineData { let_stmt, delete_let, references, target } = - if let Some(let_stmt) = ctx.find_node_at_offset::() { - inline_let(&ctx.sema, let_stmt, range, file_id) - } else if let Some(path_expr) = ctx.find_node_at_offset::() { + if let Some(path_expr) = ctx.find_node_at_offset::() { inline_usage(&ctx.sema, path_expr, range, file_id) + } else if let Some(let_stmt) = ctx.find_node_at_offset::() { + inline_let(&ctx.sema, let_stmt, range, file_id) } else { None }?; @@ -912,6 +912,28 @@ fn f() { let bar = 0; $0foo + bar$0; } +"#, + ); + } + + #[test] + fn test_inline_ref_in_let() { + check_assist( + inline_local_variable, + r#" +fn f() { + let x = { + let y = 0; + y$0 + }; +} +"#, + r#" +fn f() { + let x = { + 0 + }; +} "#, ); }