Unnamed repository; edit this file 'description' to name the repository.
Merge #11867
11867: create generate is, as, try_into group r=Veykril a=jakevossen5 Fixes #11636 In `generate_enum_projection_method.rs`, the changes to the function are from `cargo fmt`, I made the same change as I did in `generate_enum_is_method.rs`. Co-authored-by: Jake Vossen <[email protected]>
bors[bot] 2022-04-01
parent a1d684e · parent bccf013 · commit 244ee65
-rw-r--r--crates/ide_assists/src/handlers/generate_enum_is_method.rs4
-rw-r--r--crates/ide_assists/src/handlers/generate_enum_projection_method.rs43
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 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)]