diff options
| author | Jake Vossen <jake@vossen.dev> | 2022-03-31 21:19:45 -0600 |
|---|---|---|
| committer | Jake Vossen <jake@vossen.dev> | 2022-03-31 21:22:08 -0600 |
| commit | bccf013010240cd02cf5369c8b18020afa990e6d (patch) | |
| tree | 3ec03e3d875854661abe02c79a5af49d44651ee2 | |
| parent | a1d684e95130cca21fc78f1642b02811ad09db15 (diff) | |
| download | rust-bccf013010240cd02cf5369c8b18020afa990e6d.tar.gz rust-bccf013010240cd02cf5369c8b18020afa990e6d.zip | |
create generate is, as, try_into group
| -rw-r--r-- | crates/ide_assists/src/handlers/generate_enum_is_method.rs | 4 | ||||
| -rw-r--r-- | crates/ide_assists/src/handlers/generate_enum_projection_method.rs | 43 |
2 files changed, 28 insertions, 19 deletions
diff --git a/crates/ide_assists/src/handlers/generate_enum_is_method.rs b/crates/ide_assists/src/handlers/generate_enum_is_method.rs index 863ada79ba4..7dc1e4df28e 100644 --- a/crates/ide_assists/src/handlers/generate_enum_is_method.rs +++ b/crates/ide_assists/src/handlers/generate_enum_is_method.rs @@ -1,3 +1,4 @@ +use ide_db::assists::GroupLabel; use stdx::to_lower_snake_case; use syntax::ast::HasVisibility; use syntax::ast::{self, AstNode, HasName}; @@ -54,7 +55,8 @@ pub(crate) fn generate_enum_is_method(acc: &mut Assists, ctx: &AssistContext) -> let impl_def = find_struct_impl(ctx, &parent_enum, &fn_name)?; let target = variant.syntax().text_range(); - acc.add( + acc.add_group( + &GroupLabel("Generate `is_`,`as_`,`try_into_`".to_owned()), AssistId("generate_enum_is_method", AssistKind::Generate), "Generate an `is_` method for an enum variant", target, diff --git a/crates/ide_assists/src/handlers/generate_enum_projection_method.rs b/crates/ide_assists/src/handlers/generate_enum_projection_method.rs index a9116be67ca..fdaa7913401 100644 --- a/crates/ide_assists/src/handlers/generate_enum_projection_method.rs +++ b/crates/ide_assists/src/handlers/generate_enum_projection_method.rs @@ -1,3 +1,4 @@ +use ide_db::assists::GroupLabel; use itertools::Itertools; use stdx::to_lower_snake_case; use syntax::ast::HasVisibility; @@ -139,31 +140,37 @@ fn generate_enum_projection_method( let impl_def = find_struct_impl(ctx, &parent_enum, &fn_name)?; let target = variant.syntax().text_range(); - acc.add(AssistId(assist_id, AssistKind::Generate), assist_description, target, |builder| { - let vis = parent_enum.visibility().map_or(String::new(), |v| format!("{} ", v)); - let method = format!( - " {0}fn {1}({2}) -> {3}{4}{5} {{ + acc.add_group( + &GroupLabel("Generate `is_`,`as_`,`try_into_`".to_owned()), + AssistId(assist_id, AssistKind::Generate), + assist_description, + target, + |builder| { + let vis = parent_enum.visibility().map_or(String::new(), |v| format!("{} ", v)); + let method = format!( + " {0}fn {1}({2}) -> {3}{4}{5} {{ if let Self::{6}{7} = self {{ {8}({9}) }} else {{ {10} }} }}", - vis, - fn_name, - props.self_param, - props.return_prefix, - field_type.syntax(), - props.return_suffix, - variant_name, - pattern_suffix, - props.happy_case, - bound_name, - props.sad_case, - ); + vis, + fn_name, + props.self_param, + props.return_prefix, + field_type.syntax(), + props.return_suffix, + variant_name, + pattern_suffix, + props.happy_case, + bound_name, + props.sad_case, + ); - add_method_to_adt(builder, &parent_enum, impl_def, &method); - }) + add_method_to_adt(builder, &parent_enum, impl_def, &method); + }, + ) } #[cfg(test)] |
