aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/handlers/add_impl.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_assists/src/handlers/add_impl.rs')
-rw-r--r--crates/ra_assists/src/handlers/add_impl.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/crates/ra_assists/src/handlers/add_impl.rs b/crates/ra_assists/src/handlers/add_impl.rs
index afae7d385..6622eadb2 100644
--- a/crates/ra_assists/src/handlers/add_impl.rs
+++ b/crates/ra_assists/src/handlers/add_impl.rs
@@ -1,9 +1,8 @@
1use format_buf::format;
2use join_to_string::join;
3use ra_syntax::{ 1use ra_syntax::{
4 ast::{self, AstNode, NameOwner, TypeParamsOwner}, 2 ast::{self, AstNode, NameOwner, TypeParamsOwner},
5 TextUnit, 3 TextUnit,
6}; 4};
5use stdx::{format_to, SepBy};
7 6
8use crate::{Assist, AssistCtx, AssistId}; 7use crate::{Assist, AssistCtx, AssistId};
9 8
@@ -36,7 +35,7 @@ pub(crate) fn add_impl(ctx: AssistCtx) -> Option<Assist> {
36 let mut buf = String::new(); 35 let mut buf = String::new();
37 buf.push_str("\n\nimpl"); 36 buf.push_str("\n\nimpl");
38 if let Some(type_params) = &type_params { 37 if let Some(type_params) = &type_params {
39 format!(buf, "{}", type_params.syntax()); 38 format_to!(buf, "{}", type_params.syntax());
40 } 39 }
41 buf.push_str(" "); 40 buf.push_str(" ");
42 buf.push_str(name.text().as_str()); 41 buf.push_str(name.text().as_str());
@@ -47,7 +46,9 @@ pub(crate) fn add_impl(ctx: AssistCtx) -> Option<Assist> {
47 .map(|it| it.text().clone()); 46 .map(|it| it.text().clone());
48 let type_params = 47 let type_params =
49 type_params.type_params().filter_map(|it| it.name()).map(|it| it.text().clone()); 48 type_params.type_params().filter_map(|it| it.name()).map(|it| it.text().clone());
50 join(lifetime_params.chain(type_params)).surround_with("<", ">").to_buf(&mut buf); 49
50 let generic_params = lifetime_params.chain(type_params).sep_by(", ");
51 format_to!(buf, "<{}>", generic_params)
51 } 52 }
52 buf.push_str(" {\n"); 53 buf.push_str(" {\n");
53 edit.set_cursor(start_offset + TextUnit::of_str(&buf)); 54 edit.set_cursor(start_offset + TextUnit::of_str(&buf));