about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJeroen Vannevel <jer_vannevel@outlook.com>2022-01-07 01:02:16 +0000
committerJeroen Vannevel <jer_vannevel@outlook.com>2022-01-07 01:02:16 +0000
commitb6201051b2975ece55f000e2b428e69dc35b7d63 (patch)
tree3bd31da4be871a40240844731d40c17cb31a3df4
parent2fb6f5e46a5f53a78c2f750dd3c8e79dd418c4c9 (diff)
downloadrust-b6201051b2975ece55f000e2b428e69dc35b7d63.tar.gz
rust-b6201051b2975ece55f000e2b428e69dc35b7d63.zip
Count the type parameters only
-rw-r--r--crates/ide_assists/src/handlers/add_turbo_fish.rs27
1 files changed, 26 insertions, 1 deletions
diff --git a/crates/ide_assists/src/handlers/add_turbo_fish.rs b/crates/ide_assists/src/handlers/add_turbo_fish.rs
index 2872edc9e10..95182d6edef 100644
--- a/crates/ide_assists/src/handlers/add_turbo_fish.rs
+++ b/crates/ide_assists/src/handlers/add_turbo_fish.rs
@@ -77,7 +77,13 @@ pub(crate) fn add_turbo_fish(acc: &mut Assists, ctx: &AssistContext) -> Option<(
         }
     }
 
-    let number_of_arguments = generics.len();
+    let number_of_arguments = generics
+        .iter()
+        .filter(|param| match param {
+            hir::GenericParam::TypeParam(_) => true,
+            _ => false,
+        })
+        .count();
     let fish_head = std::iter::repeat("_").take(number_of_arguments).collect::<Vec<_>>().join(",");
 
     acc.add(
@@ -339,4 +345,23 @@ fn main() {
             "Add `: _` before assignment operator",
         );
     }
+
+    #[test]
+    fn add_turbo_fish_function_lifetime_parameter() {
+        check_assist(
+            add_turbo_fish,
+            r#"
+fn make<'a, T, A>(t: T, a: A) {}
+fn main() {
+    make$0(5, 2);
+}
+"#,
+            r#"
+fn make<'a, T, A>(t: T, a: A) {}
+fn main() {
+    make::<${0:_,_}>(5, 2);
+}
+"#,
+        );
+    }
 }