about summary refs log tree commit diff
diff options
context:
space:
mode:
authorroife <roifewu@gmail.com>2023-12-11 00:53:44 +0800
committerroife <roifewu@gmail.com>2024-01-02 21:30:57 +0800
commitbc1a5774fd9fc1cbc2ffcb74d72e2894e2171d0b (patch)
tree703a2cde3c036db43c1bdcfd1231998b81f866ff
parent186553dab81c0b675cf41162c528c758e558d0ec (diff)
downloadrust-bc1a5774fd9fc1cbc2ffcb74d72e2894e2171d0b.tar.gz
rust-bc1a5774fd9fc1cbc2ffcb74d72e2894e2171d0b.zip
fix: handle with type bounds in existing_params
-rw-r--r--crates/ide-assists/src/utils/suggest_name.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/crates/ide-assists/src/utils/suggest_name.rs b/crates/ide-assists/src/utils/suggest_name.rs
index 8a698e4068a..455bbc0b681 100644
--- a/crates/ide-assists/src/utils/suggest_name.rs
+++ b/crates/ide-assists/src/utils/suggest_name.rs
@@ -70,8 +70,13 @@ pub(crate) fn for_unique_generic_name(
     name: &str,
     existing_params: &ast::GenericParamList,
 ) -> SmolStr {
-    let param_names = existing_params.generic_params().map(|param| param.to_string()).collect_vec();
-
+    let param_names = existing_params
+        .generic_params()
+        .map(|param| match param {
+            ast::GenericParam::TypeParam(t) => t.name().unwrap().to_string(),
+            p => p.to_string(),
+        })
+        .collect_vec();
     let mut name = name.to_string();
     let base_len = name.len();
     // 4*len bytes for base, and 2 bytes for 2 digits