]> git.lizzy.rs Git - rust.git/blobdiff - crates/assists/src/handlers/generate_enum_match_method.rs
Add getter/setter assists
[rust.git] / crates / assists / src / handlers / generate_enum_match_method.rs
index 9d6b161c98a9fe4d6d0253361dd726be21ed4004..c3ff38b6668290499be114e6c6a317be505c40f2 100644 (file)
@@ -4,7 +4,7 @@
 use test_utils::mark;
 
 use crate::{
-    utils::{find_impl_block, find_struct_impl},
+    utils::{find_impl_block, find_struct_impl, generate_impl_text},
     AssistContext, AssistId, AssistKind, Assists,
 };
 
@@ -82,7 +82,7 @@ pub(crate) fn generate_enum_match_method(acc: &mut Assists, ctx: &AssistContext)
             let start_offset = impl_def
                 .and_then(|impl_def| find_impl_block(impl_def, &mut buf))
                 .unwrap_or_else(|| {
-                    buf = generate_impl_text(&parent_enum, &buf);
+                    buf = generate_impl_text(&ast::Adt::Enum(parent_enum.clone()), &buf);
                     parent_enum.syntax().text_range().end()
                 });
 
@@ -91,16 +91,6 @@ pub(crate) fn generate_enum_match_method(acc: &mut Assists, ctx: &AssistContext)
     )
 }
 
-// Generates the surrounding `impl Type { <code> }` including type and lifetime
-// parameters
-fn generate_impl_text(strukt: &ast::Enum, code: &str) -> String {
-    let mut buf = String::with_capacity(code.len());
-    buf.push_str("\n\nimpl ");
-    buf.push_str(strukt.name().unwrap().text());
-    format_to!(buf, " {{\n{}\n}}", code);
-    buf
-}
-
 #[cfg(test)]
 mod tests {
     use test_utils::mark;