diff options
| author | Wang Ruochen <wrc@ruo-chen.wang> | 2021-12-21 16:48:02 -0800 |
|---|---|---|
| committer | Wang Ruochen <wrc@ruo-chen.wang> | 2021-12-21 16:48:02 -0800 |
| commit | d0986cd96b8765f252fe3d9d140cc313298d919b (patch) | |
| tree | dd68c40c34562527313d34ca76ba1182b634b36a | |
| parent | 71676ae89d14ab6bc7db586266f043a84cfdffbd (diff) | |
| download | rust-d0986cd96b8765f252fe3d9d140cc313298d919b.tar.gz rust-d0986cd96b8765f252fe3d9d140cc313298d919b.zip | |
Move variables into the closure
| -rw-r--r-- | crates/ide_assists/src/handlers/move_guard.rs | 25 |
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 { |
