about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWang Ruochen <wrc@ruo-chen.wang>2021-12-21 16:48:02 -0800
committerWang Ruochen <wrc@ruo-chen.wang>2021-12-21 16:48:02 -0800
commitd0986cd96b8765f252fe3d9d140cc313298d919b (patch)
treedd68c40c34562527313d34ca76ba1182b634b36a
parent71676ae89d14ab6bc7db586266f043a84cfdffbd (diff)
downloadrust-d0986cd96b8765f252fe3d9d140cc313298d919b.tar.gz
rust-d0986cd96b8765f252fe3d9d140cc313298d919b.zip
Move variables into the closure
-rw-r--r--crates/ide_assists/src/handlers/move_guard.rs25
1 files changed, 13 insertions, 12 deletions
diff --git a/crates/ide_assists/src/handlers/move_guard.rs b/crates/ide_assists/src/handlers/move_guard.rs
index 58c37471e63..c427ee88a24 100644
--- a/crates/ide_assists/src/handlers/move_guard.rs
+++ b/crates/ide_assists/src/handlers/move_guard.rs
@@ -116,26 +116,27 @@ pub(crate) fn move_arm_cond_to_match_guard(acc: &mut Assists, ctx: &AssistContex
         }
     })?;
     let replace_node = replace_node.unwrap_or_else(|| if_expr.syntax().clone());
-    // Dedent if if_expr is in a BlockExpr
-    let dedent = if replace_node != *if_expr.syntax() {
-        cov_mark::hit!(move_guard_ifelse_in_block);
-        1
-    } else {
-        cov_mark::hit!(move_guard_ifelse_else_block);
-        0
-    };
-
+    let needs_dedent = replace_node != *if_expr.syntax();
     let (conds_blocks, tail) = parse_if_chain(if_expr)?;
 
-    let then_arm_end = match_arm.syntax().text_range().end();
-    let indent_level = match_arm.indent_level();
-    let spaces = "    ".repeat(indent_level.0 as _);
     acc.add(
         AssistId("move_arm_cond_to_match_guard", AssistKind::RefactorRewrite),
         "Move condition to match guard",
         replace_node.text_range(),
         |edit| {
             edit.delete(match_arm.syntax().text_range());
+            // Dedent if if_expr is in a BlockExpr
+            let dedent = if needs_dedent {
+                cov_mark::hit!(move_guard_ifelse_in_block);
+                1
+            } else {
+                cov_mark::hit!(move_guard_ifelse_else_block);
+                0
+            };
+            let then_arm_end = match_arm.syntax().text_range().end();
+            let indent_level = match_arm.indent_level();
+            let spaces = "    ".repeat(indent_level.0 as _);
+
             let mut first = true;
             for (cond, block) in conds_blocks {
                 if !first {