Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/generate_function.rs')
-rw-r--r--crates/ide-assists/src/handlers/generate_function.rs31
1 files changed, 23 insertions, 8 deletions
diff --git a/crates/ide-assists/src/handlers/generate_function.rs b/crates/ide-assists/src/handlers/generate_function.rs
index bd66c02b41..ded3b0f5ac 100644
--- a/crates/ide-assists/src/handlers/generate_function.rs
+++ b/crates/ide-assists/src/handlers/generate_function.rs
@@ -1147,14 +1147,7 @@ fn fn_arg_type(
if ty.is_reference() || ty.is_mutable_reference() {
let famous_defs = &FamousDefs(&ctx.sema, ctx.sema.scope(fn_arg.syntax())?.krate());
convert_reference_type(ty.strip_references(), ctx.db(), famous_defs)
- .map(|conversion| {
- conversion
- .convert_type(
- ctx.db(),
- target_module.krate(ctx.db()).to_display_target(ctx.db()),
- )
- .to_string()
- })
+ .map(|conversion| conversion.convert_type(ctx.db(), target_module).to_string())
.or_else(|| ty.display_source_code(ctx.db(), target_module.into(), true).ok())
} else {
ty.display_source_code(ctx.db(), target_module.into(), true).ok()
@@ -3191,4 +3184,26 @@ fn main() {
"#,
);
}
+
+ #[test]
+ fn regression_21288() {
+ check_assist(
+ generate_function,
+ r#"
+//- minicore: copy
+fn foo() {
+ $0bar(&|x| true)
+}
+ "#,
+ r#"
+fn foo() {
+ bar(&|x| true)
+}
+
+fn bar(arg: impl Fn(_) -> bool) {
+ ${0:todo!()}
+}
+ "#,
+ );
+ }
}