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 863ada79ba..7dc1e4df28 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 a9116be67c..fdaa791340 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)]