diff options
Diffstat (limited to 'crates/ra_assists/src/move_guard.rs')
-rw-r--r-- | crates/ra_assists/src/move_guard.rs | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/crates/ra_assists/src/move_guard.rs b/crates/ra_assists/src/move_guard.rs index 313c9ad18..0f3cdbe53 100644 --- a/crates/ra_assists/src/move_guard.rs +++ b/crates/ra_assists/src/move_guard.rs | |||
@@ -17,11 +17,11 @@ pub(crate) fn move_guard_to_arm_body(mut ctx: AssistCtx<impl HirDatabase>) -> Op | |||
17 | let buf = format!("if {} {{ {} }}", guard_conditions.syntax().text(), arm_expr.syntax().text()); | 17 | let buf = format!("if {} {{ {} }}", guard_conditions.syntax().text(), arm_expr.syntax().text()); |
18 | 18 | ||
19 | ctx.add_action(AssistId("move_guard_to_arm_body"), "move guard to arm body", |edit| { | 19 | ctx.add_action(AssistId("move_guard_to_arm_body"), "move guard to arm body", |edit| { |
20 | edit.target(guard.syntax().range()); | 20 | edit.target(guard.syntax().text_range()); |
21 | let offseting_amount = match &space_before_guard { | 21 | let offseting_amount = match &space_before_guard { |
22 | Some(SyntaxElement::Token(tok)) => { | 22 | Some(SyntaxElement::Token(tok)) => { |
23 | if let Some(_) = ast::Whitespace::cast(tok.clone()) { | 23 | if let Some(_) = ast::Whitespace::cast(tok.clone()) { |
24 | let ele = space_before_guard.unwrap().range(); | 24 | let ele = space_before_guard.unwrap().text_range(); |
25 | edit.delete(ele); | 25 | edit.delete(ele); |
26 | ele.len() | 26 | ele.len() |
27 | } else { | 27 | } else { |
@@ -31,9 +31,11 @@ pub(crate) fn move_guard_to_arm_body(mut ctx: AssistCtx<impl HirDatabase>) -> Op | |||
31 | _ => TextUnit::from(0), | 31 | _ => TextUnit::from(0), |
32 | }; | 32 | }; |
33 | 33 | ||
34 | edit.delete(guard.syntax().range()); | 34 | edit.delete(guard.syntax().text_range()); |
35 | edit.replace_node_and_indent(arm_expr.syntax(), buf); | 35 | edit.replace_node_and_indent(arm_expr.syntax(), buf); |
36 | edit.set_cursor(arm_expr.syntax().range().start() + TextUnit::from(3) - offseting_amount); | 36 | edit.set_cursor( |
37 | arm_expr.syntax().text_range().start() + TextUnit::from(3) - offseting_amount, | ||
38 | ); | ||
37 | }); | 39 | }); |
38 | ctx.build() | 40 | ctx.build() |
39 | } | 41 | } |
@@ -62,18 +64,18 @@ pub(crate) fn move_arm_cond_to_match_guard(mut ctx: AssistCtx<impl HirDatabase>) | |||
62 | AssistId("move_arm_cond_to_match_guard"), | 64 | AssistId("move_arm_cond_to_match_guard"), |
63 | "move condition to match guard", | 65 | "move condition to match guard", |
64 | |edit| { | 66 | |edit| { |
65 | edit.target(if_expr.syntax().range()); | 67 | edit.target(if_expr.syntax().text_range()); |
66 | let then_only_expr = then_block.statements().next().is_none(); | 68 | let then_only_expr = then_block.statements().next().is_none(); |
67 | 69 | ||
68 | match &then_block.expr() { | 70 | match &then_block.expr() { |
69 | Some(then_expr) if then_only_expr => { | 71 | Some(then_expr) if then_only_expr => { |
70 | edit.replace(if_expr.syntax().range(), then_expr.syntax().text()) | 72 | edit.replace(if_expr.syntax().text_range(), then_expr.syntax().text()) |
71 | } | 73 | } |
72 | _ => edit.replace(if_expr.syntax().range(), then_block.syntax().text()), | 74 | _ => edit.replace(if_expr.syntax().text_range(), then_block.syntax().text()), |
73 | } | 75 | } |
74 | 76 | ||
75 | edit.insert(last_match_pat.syntax().range().end(), buf); | 77 | edit.insert(last_match_pat.syntax().text_range().end(), buf); |
76 | edit.set_cursor(last_match_pat.syntax().range().end() + TextUnit::from(1)); | 78 | edit.set_cursor(last_match_pat.syntax().text_range().end() + TextUnit::from(1)); |
77 | }, | 79 | }, |
78 | ); | 80 | ); |
79 | ctx.build() | 81 | ctx.build() |