]> git.lizzy.rs Git - rust.git/commitdiff
Count the type parameters only
authorJeroen Vannevel <jer_vannevel@outlook.com>
Fri, 7 Jan 2022 01:02:16 +0000 (01:02 +0000)
committerJeroen Vannevel <jer_vannevel@outlook.com>
Fri, 7 Jan 2022 01:02:16 +0000 (01:02 +0000)
crates/ide_assists/src/handlers/add_turbo_fish.rs

index 2872edc9e106c0ac863460ce5ddc6330a70716ae..95182d6edef5a455cccd85d45c143214e7bc1750 100644 (file)
@@ -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);
+}
+"#,
+        );
+    }
 }