about summary refs log tree commit diff
path: root/tests/ui/impl-trait/issue-103181-2.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/impl-trait/issue-103181-2.rs')
-rw-r--r--tests/ui/impl-trait/issue-103181-2.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/ui/impl-trait/issue-103181-2.rs b/tests/ui/impl-trait/issue-103181-2.rs
new file mode 100644
index 00000000000..b43ac45075e
--- /dev/null
+++ b/tests/ui/impl-trait/issue-103181-2.rs
@@ -0,0 +1,29 @@
+// edition:2021
+
+trait SendFuture: Send {
+    type Output;
+}
+
+impl<Fut: Send> SendFuture for Fut {
+    type Output = ();
+}
+
+async fn broken_fut() {
+    ident_error;
+    //~^ ERROR cannot find value `ident_error` in this scope
+}
+
+// triggers normalization of `<Fut as SendFuture>::Output`,
+// which requires `Fut: Send`.
+fn normalize<Fut: SendFuture>(_: Fut, _: Fut::Output) {}
+
+async fn iceice<A, B>()
+// <- async fn is necessary
+where
+    A: Send,
+    B: Send, // <- a second bound
+{
+    normalize(broken_fut(), ());
+}
+
+fn main() {}