let next_token = ident.next_token()?;
if next_token.kind() == T![::] {
mark::hit!(add_turbo_fish_one_fish_is_enough);
- mark::hit!(add_type_ascription_turbofished);
return None;
}
let name_ref = ast::NameRef::cast(ident.parent())?;
let generics = hir::GenericDef::Function(fun).params(ctx.sema.db);
if generics.is_empty() {
mark::hit!(add_turbo_fish_non_generic);
- mark::hit!(add_type_ascription_non_generic);
return None;
}
);
}
- #[test]
- fn add_type_ascription_turbofished() {
- mark::check!(add_type_ascription_turbofished);
- check_assist_not_applicable(
- add_turbo_fish,
- r#"
-fn make<T>() -> T {}
-fn main() {
- let x = make$0::<()>();
-}
-"#,
- );
- }
-
#[test]
fn add_type_ascription_already_typed() {
mark::check!(add_type_ascription_already_typed);
fn main() {
let x: () = make::<${0:_}>();
}
-"#,
- );
- }
-
- #[test]
- fn add_type_ascription_non_generic() {
- mark::check!(add_type_ascription_non_generic);
- check_assist_not_applicable(
- add_turbo_fish,
- r#"
-fn make() -> () {}
-fn main() {
- let x = make$0();
-}
"#,
);
}