about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJake Vossen <jake@vossen.dev>2022-03-31 21:19:45 -0600
committerJake Vossen <jake@vossen.dev>2022-03-31 21:22:08 -0600
commitbccf013010240cd02cf5369c8b18020afa990e6d (patch)
tree3ec03e3d875854661abe02c79a5af49d44651ee2
parenta1d684e95130cca21fc78f1642b02811ad09db15 (diff)
downloadrust-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.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 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)]