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.rs | 19 |
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() { |