diff options
author | Andrea Pretto <[email protected]> | 2019-02-11 17:07:21 +0000 |
---|---|---|
committer | Andrea Pretto <[email protected]> | 2019-02-11 17:07:21 +0000 |
commit | 5c9c0d3ae2735b4b32a44742bac800ca616fdde8 (patch) | |
tree | 8ad5dc9a548915729bcc87085a1a145d4ba2a00a /crates/ra_assists/src/replace_if_let_with_match.rs | |
parent | af62fde57fe58f4aa06608568dc26535731800a0 (diff) |
ra_assists: assist "providers" can produce multiple assists
Diffstat (limited to 'crates/ra_assists/src/replace_if_let_with_match.rs')
-rw-r--r-- | crates/ra_assists/src/replace_if_let_with_match.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/crates/ra_assists/src/replace_if_let_with_match.rs b/crates/ra_assists/src/replace_if_let_with_match.rs index f74ab3c67..87a2c1185 100644 --- a/crates/ra_assists/src/replace_if_let_with_match.rs +++ b/crates/ra_assists/src/replace_if_let_with_match.rs | |||
@@ -4,7 +4,7 @@ use hir::db::HirDatabase; | |||
4 | 4 | ||
5 | use crate::{AssistCtx, Assist}; | 5 | use crate::{AssistCtx, Assist}; |
6 | 6 | ||
7 | pub(crate) fn replace_if_let_with_match(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { | 7 | pub(crate) fn replace_if_let_with_match(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { |
8 | let if_expr: &ast::IfExpr = ctx.node_at_offset()?; | 8 | let if_expr: &ast::IfExpr = ctx.node_at_offset()?; |
9 | let cond = if_expr.condition()?; | 9 | let cond = if_expr.condition()?; |
10 | let pat = cond.pat()?; | 10 | let pat = cond.pat()?; |
@@ -15,12 +15,14 @@ pub(crate) fn replace_if_let_with_match(ctx: AssistCtx<impl HirDatabase>) -> Opt | |||
15 | ast::ElseBranchFlavor::IfExpr(_) => return None, | 15 | ast::ElseBranchFlavor::IfExpr(_) => return None, |
16 | }; | 16 | }; |
17 | 17 | ||
18 | ctx.build("replace with match", |edit| { | 18 | ctx.add_action("replace with match", |edit| { |
19 | let match_expr = build_match_expr(expr, pat, then_block, else_block); | 19 | let match_expr = build_match_expr(expr, pat, then_block, else_block); |
20 | edit.target(if_expr.syntax().range()); | 20 | edit.target(if_expr.syntax().range()); |
21 | edit.replace_node_and_indent(if_expr.syntax(), match_expr); | 21 | edit.replace_node_and_indent(if_expr.syntax(), match_expr); |
22 | edit.set_cursor(if_expr.syntax().range().start()) | 22 | edit.set_cursor(if_expr.syntax().range().start()) |
23 | }) | 23 | }); |
24 | |||
25 | ctx.build() | ||
24 | } | 26 | } |
25 | 27 | ||
26 | fn build_match_expr( | 28 | fn build_match_expr( |