//@ check-pass // Regression test for #![feature(impl_trait_in_fn_trait_return)] #![feature(unboxed_closures)] // only for `h` use std::fmt::Debug; fn f() -> impl Fn(T) -> impl Debug { |_x| 15 } fn g() -> impl MyFn<(T,), Out = impl Debug> { |_x| 15 } trait MyFn { type Out; } impl U> MyFn<(T,)> for F { type Out = U; } fn h() -> impl Fn<(T,), Output = impl Debug> { |_x| 15 } fn f_() -> impl Fn(T) -> impl Debug { std::convert::identity(|_x| 15) } fn f__() -> impl Fn(T) -> impl Debug { let r = |_x| 15; r } fn main() {}