Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_assists/src/utils.rs')
-rw-r--r--crates/ide_assists/src/utils.rs19
1 files changed, 9 insertions, 10 deletions
diff --git a/crates/ide_assists/src/utils.rs b/crates/ide_assists/src/utils.rs
index e1ee3f3ad4..116f150ef2 100644
--- a/crates/ide_assists/src/utils.rs
+++ b/crates/ide_assists/src/utils.rs
@@ -435,7 +435,11 @@ fn generate_impl_text_inner(adt: &ast::Adt, trait_text: Option<&str>, code: &str
buf.push_str("impl");
if let Some(generic_params) = &generic_params {
let lifetimes = generic_params.lifetime_params().map(|lt| format!("{}", lt.syntax()));
- let type_params = generic_params.type_params().map(|type_param| {
+ let toc_params = generic_params.type_or_const_params().map(|toc_param| {
+ let type_param = match toc_param {
+ ast::TypeOrConstParam::Type(x) => x,
+ ast::TypeOrConstParam::Const(x) => return x.syntax().to_string(),
+ };
let mut buf = String::new();
if let Some(it) = type_param.name() {
format_to!(buf, "{}", it.syntax());
@@ -448,8 +452,7 @@ fn generate_impl_text_inner(adt: &ast::Adt, trait_text: Option<&str>, code: &str
}
buf
});
- let const_params = generic_params.const_params().map(|t| t.syntax().to_string());
- let generics = lifetimes.chain(type_params).chain(const_params).format(", ");
+ let generics = lifetimes.chain(toc_params).format(", ");
format_to!(buf, "<{}>", generics);
}
buf.push(' ');
@@ -463,15 +466,11 @@ fn generate_impl_text_inner(adt: &ast::Adt, trait_text: Option<&str>, code: &str
.lifetime_params()
.filter_map(|it| it.lifetime())
.map(|it| SmolStr::from(it.text()));
- let type_params = generic_params
- .type_params()
- .filter_map(|it| it.name())
- .map(|it| SmolStr::from(it.text()));
- let const_params = generic_params
- .const_params()
+ let toc_params = generic_params
+ .type_or_const_params()
.filter_map(|it| it.name())
.map(|it| SmolStr::from(it.text()));
- format_to!(buf, "<{}>", lifetime_params.chain(type_params).chain(const_params).format(", "))
+ format_to!(buf, "<{}>", lifetime_params.chain(toc_params).format(", "))
}
match adt.where_clause() {