From: Jeroen Vannevel Date: Fri, 7 Jan 2022 01:02:16 +0000 (+0000) Subject: Count the type parameters only X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=b6201051b2975ece55f000e2b428e69dc35b7d63;p=rust.git Count the type parameters only --- 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::>().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); +} +"#, + ); + } }