diff --git a/tests/ui/impl-trait/impl-fn-rpit-opaque-107883.rs b/tests/ui/impl-trait/impl-fn-rpit-opaque-107883.rs new file mode 100644 index 0000000000000..3655bff63eb0c --- /dev/null +++ b/tests/ui/impl-trait/impl-fn-rpit-opaque-107883.rs @@ -0,0 +1,37 @@ +//@ 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() {}