From a88c9a644c8869af1caf8b8163e4e533edd14cfb Mon Sep 17 00:00:00 2001 From: Dominic Date: Thu, 28 Dec 2023 14:53:23 +0100 Subject: [PATCH] Add regression test for #106630 --- .../not_general_enough_regression_106630.rs | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tests/ui/impl-trait/not_general_enough_regression_106630.rs diff --git a/tests/ui/impl-trait/not_general_enough_regression_106630.rs b/tests/ui/impl-trait/not_general_enough_regression_106630.rs new file mode 100644 index 0000000000000..439973950f397 --- /dev/null +++ b/tests/ui/impl-trait/not_general_enough_regression_106630.rs @@ -0,0 +1,33 @@ +// edition:2018 +// run-pass + +use std::future::Future; + +trait AsyncCallback<'a> { + type Out; +} + +impl<'a, Fut, T, F> AsyncCallback<'a> for F +where + F: FnOnce(&'a mut ()) -> Fut, + Fut: Future + Send + 'a, +{ + type Out = T; +} + +trait CallbackMarker {} + +impl CallbackMarker for F +where + T: 'static, + for<'a> F: AsyncCallback<'a, Out = T> + Send, +{ +} + +fn do_sth(_: F) {} + +async fn callback(_: &mut ()) -> impl Send {} + +fn main() { + do_sth(callback); +}