about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDorian Scheidt <dorian.scheidt@gmail.com>2022-07-20 12:11:00 -0500
committerDorian Scheidt <dorian.scheidt@gmail.com>2022-08-02 14:37:12 -0400
commitbea1fec7a2c949d6470f2182d34c5b349605f7a1 (patch)
tree35ba89982bd41564718e9dcbe907922ffe155b8b
parent405dd77d30382f417f033e4feba2b2bd02ebe00e (diff)
downloadrust-bea1fec7a2c949d6470f2182d34c5b349605f7a1.tar.gz
rust-bea1fec7a2c949d6470f2182d34c5b349605f7a1.zip
convert generate_enum_variant to use add_variant
-rw-r--r--crates/ide-assists/src/handlers/generate_enum_variant.rs20
1 files changed, 5 insertions, 15 deletions
diff --git a/crates/ide-assists/src/handlers/generate_enum_variant.rs b/crates/ide-assists/src/handlers/generate_enum_variant.rs
index 4461fbd5ac8..04620645e6d 100644
--- a/crates/ide-assists/src/handlers/generate_enum_variant.rs
+++ b/crates/ide-assists/src/handlers/generate_enum_variant.rs
@@ -1,8 +1,8 @@
 use hir::{HasSource, InFile};
 use ide_db::assists::{AssistId, AssistKind};
 use syntax::{
-    ast::{self, edit::IndentLevel},
-    AstNode, TextSize,
+    ast::{self, make},
+    AstNode,
 };
 
 use crate::assist_context::{AssistContext, Assists};
@@ -65,26 +65,16 @@ fn add_variant_to_accumulator(
 ) -> Option<()> {
     let db = ctx.db();
     let InFile { file_id, value: enum_node } = adt.source(db)?.original_ast_node(db)?;
-    let enum_indent = IndentLevel::from_node(&enum_node.syntax());
-
-    let variant_list = enum_node.variant_list()?;
-    let offset = variant_list.syntax().text_range().end() - TextSize::of('}');
-    let empty_enum = variant_list.variants().next().is_none();
 
+    let variant = make::variant(make::name(&name_ref.text()), None);
     acc.add(
         AssistId("generate_enum_variant", AssistKind::Generate),
         "Generate variant",
         target,
         |builder| {
             builder.edit_file(file_id.original_file(db));
-            let text = format!(
-                "{maybe_newline}{indent_1}{name},\n{enum_indent}",
-                maybe_newline = if empty_enum { "\n" } else { "" },
-                indent_1 = IndentLevel(1),
-                name = name_ref,
-                enum_indent = enum_indent
-            );
-            builder.insert(offset, text)
+            let node = builder.make_mut(enum_node);
+            node.variant_list().map(|it| it.add_variant(variant.clone_for_update()));
         },
     )
 }