diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-10-27 08:27:19 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2019-10-27 08:27:19 +0000 |
commit | b85f6d522af7630ab227762076a9fbf75de502de (patch) | |
tree | 3793da47dbe724189842cabeb5a7cef91ad592ef /crates/ra_assists/src/assists | |
parent | 85984b09e182adca4b03d9f7efab20d48b5b632a (diff) | |
parent | a490ba06fa635ecb34b5ce0b7205621eefaee603 (diff) |
Merge #2083
2083: document some more assists r=matklad a=matklad
Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_assists/src/assists')
-rw-r--r-- | crates/ra_assists/src/assists/merge_match_arms.rs | 26 | ||||
-rw-r--r-- | crates/ra_assists/src/assists/move_bounds.rs | 17 | ||||
-rw-r--r-- | crates/ra_assists/src/assists/move_guard.rs | 52 |
3 files changed, 89 insertions, 6 deletions
diff --git a/crates/ra_assists/src/assists/merge_match_arms.rs b/crates/ra_assists/src/assists/merge_match_arms.rs index 17baa98f9..f5ddd7159 100644 --- a/crates/ra_assists/src/assists/merge_match_arms.rs +++ b/crates/ra_assists/src/assists/merge_match_arms.rs | |||
@@ -1,9 +1,31 @@ | |||
1 | //! FIXME: write short doc here | ||
2 | |||
3 | use crate::{Assist, AssistCtx, AssistId, TextRange, TextUnit}; | 1 | use crate::{Assist, AssistCtx, AssistId, TextRange, TextUnit}; |
4 | use hir::db::HirDatabase; | 2 | use hir::db::HirDatabase; |
5 | use ra_syntax::ast::{AstNode, MatchArm}; | 3 | use ra_syntax::ast::{AstNode, MatchArm}; |
6 | 4 | ||
5 | // Assist: merge_match_arms | ||
6 | // | ||
7 | // Merges identical match arms. | ||
8 | // | ||
9 | // ``` | ||
10 | // enum Action { Move { distance: u32 }, Stop } | ||
11 | // | ||
12 | // fn handle(action: Action) { | ||
13 | // match action { | ||
14 | // <|>Action::Move(..) => foo(), | ||
15 | // Action::Stop => foo(), | ||
16 | // } | ||
17 | // } | ||
18 | // ``` | ||
19 | // -> | ||
20 | // ``` | ||
21 | // enum Action { Move { distance: u32 }, Stop } | ||
22 | // | ||
23 | // fn handle(action: Action) { | ||
24 | // match action { | ||
25 | // Action::Move(..) | Action::Stop => foo(), | ||
26 | // } | ||
27 | // } | ||
28 | // ``` | ||
7 | pub(crate) fn merge_match_arms(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { | 29 | pub(crate) fn merge_match_arms(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { |
8 | let current_arm = ctx.node_at_offset::<MatchArm>()?; | 30 | let current_arm = ctx.node_at_offset::<MatchArm>()?; |
9 | 31 | ||
diff --git a/crates/ra_assists/src/assists/move_bounds.rs b/crates/ra_assists/src/assists/move_bounds.rs index d2444b6b9..f96e19a9f 100644 --- a/crates/ra_assists/src/assists/move_bounds.rs +++ b/crates/ra_assists/src/assists/move_bounds.rs | |||
@@ -1,5 +1,3 @@ | |||
1 | //! FIXME: write short doc here | ||
2 | |||
3 | use hir::db::HirDatabase; | 1 | use hir::db::HirDatabase; |
4 | use ra_syntax::{ | 2 | use ra_syntax::{ |
5 | ast::{self, edit, make, AstNode, NameOwner, TypeBoundsOwner}, | 3 | ast::{self, edit, make, AstNode, NameOwner, TypeBoundsOwner}, |
@@ -9,6 +7,21 @@ use ra_syntax::{ | |||
9 | 7 | ||
10 | use crate::{Assist, AssistCtx, AssistId}; | 8 | use crate::{Assist, AssistCtx, AssistId}; |
11 | 9 | ||
10 | // Assist: move_bounds_to_where_clause | ||
11 | // | ||
12 | // Moves inline type bounds to a where clause. | ||
13 | // | ||
14 | // ``` | ||
15 | // fn apply<T, U, <|>F: FnOnce(T) -> U>(f: F, x: T) -> U { | ||
16 | // f(x) | ||
17 | // } | ||
18 | // ``` | ||
19 | // -> | ||
20 | // ``` | ||
21 | // fn apply<T, U, F>(f: F, x: T) -> U where F: FnOnce(T) -> U { | ||
22 | // f(x) | ||
23 | // } | ||
24 | // ``` | ||
12 | pub(crate) fn move_bounds_to_where_clause(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { | 25 | pub(crate) fn move_bounds_to_where_clause(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { |
13 | let type_param_list = ctx.node_at_offset::<ast::TypeParamList>()?; | 26 | let type_param_list = ctx.node_at_offset::<ast::TypeParamList>()?; |
14 | 27 | ||
diff --git a/crates/ra_assists/src/assists/move_guard.rs b/crates/ra_assists/src/assists/move_guard.rs index 51aea6334..36c95128d 100644 --- a/crates/ra_assists/src/assists/move_guard.rs +++ b/crates/ra_assists/src/assists/move_guard.rs | |||
@@ -1,5 +1,3 @@ | |||
1 | //! FIXME: write short doc here | ||
2 | |||
3 | use hir::db::HirDatabase; | 1 | use hir::db::HirDatabase; |
4 | use ra_syntax::{ | 2 | use ra_syntax::{ |
5 | ast, | 3 | ast, |
@@ -9,6 +7,31 @@ use ra_syntax::{ | |||
9 | 7 | ||
10 | use crate::{Assist, AssistCtx, AssistId}; | 8 | use crate::{Assist, AssistCtx, AssistId}; |
11 | 9 | ||
10 | // Assist: move_guard_to_arm_body | ||
11 | // | ||
12 | // Moves match guard into match arm body. | ||
13 | // | ||
14 | // ``` | ||
15 | // enum Action { Move { distance: u32 }, Stop } | ||
16 | // | ||
17 | // fn handle(action: Action) { | ||
18 | // match action { | ||
19 | // Action::Move { distance } <|>if distance > 10 => foo(), | ||
20 | // _ => (), | ||
21 | // } | ||
22 | // } | ||
23 | // ``` | ||
24 | // -> | ||
25 | // ``` | ||
26 | // enum Action { Move { distance: u32 }, Stop } | ||
27 | // | ||
28 | // fn handle(action: Action) { | ||
29 | // match action { | ||
30 | // Action::Move { distance } => if distance > 10 { foo() }, | ||
31 | // _ => (), | ||
32 | // } | ||
33 | // } | ||
34 | // ``` | ||
12 | pub(crate) fn move_guard_to_arm_body(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { | 35 | pub(crate) fn move_guard_to_arm_body(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { |
13 | let match_arm = ctx.node_at_offset::<MatchArm>()?; | 36 | let match_arm = ctx.node_at_offset::<MatchArm>()?; |
14 | let guard = match_arm.guard()?; | 37 | let guard = match_arm.guard()?; |
@@ -42,6 +65,31 @@ pub(crate) fn move_guard_to_arm_body(mut ctx: AssistCtx<impl HirDatabase>) -> Op | |||
42 | ctx.build() | 65 | ctx.build() |
43 | } | 66 | } |
44 | 67 | ||
68 | // Assist: move_arm_cond_to_match_guard | ||
69 | // | ||
70 | // Moves if expression from match arm body into a guard. | ||
71 | // | ||
72 | // ``` | ||
73 | // enum Action { Move { distance: u32 }, Stop } | ||
74 | // | ||
75 | // fn handle(action: Action) { | ||
76 | // match action { | ||
77 | // Action::Move { distance } => <|>if distance > 10 { foo() }, | ||
78 | // _ => (), | ||
79 | // } | ||
80 | // } | ||
81 | // ``` | ||
82 | // -> | ||
83 | // ``` | ||
84 | // enum Action { Move { distance: u32 }, Stop } | ||
85 | // | ||
86 | // fn handle(action: Action) { | ||
87 | // match action { | ||
88 | // Action::Move { distance } if distance > 10 => foo(), | ||
89 | // _ => (), | ||
90 | // } | ||
91 | // } | ||
92 | // ``` | ||
45 | pub(crate) fn move_arm_cond_to_match_guard(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { | 93 | pub(crate) fn move_arm_cond_to_match_guard(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> { |
46 | let match_arm: MatchArm = ctx.node_at_offset::<MatchArm>()?; | 94 | let match_arm: MatchArm = ctx.node_at_offset::<MatchArm>()?; |
47 | let last_match_pat = match_arm.pats().last()?; | 95 | let last_match_pat = match_arm.pats().last()?; |