summaryrefslogtreecommitdiffstats
path: root/src/test/ui/generic-associated-types/issue-92096.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/generic-associated-types/issue-92096.rs')
-rw-r--r--src/test/ui/generic-associated-types/issue-92096.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/test/ui/generic-associated-types/issue-92096.rs b/src/test/ui/generic-associated-types/issue-92096.rs
new file mode 100644
index 000000000..377b8164a
--- /dev/null
+++ b/src/test/ui/generic-associated-types/issue-92096.rs
@@ -0,0 +1,30 @@
+// edition:2018
+
+#![feature(generic_associated_types)]
+
+use std::future::Future;
+
+trait Client {
+ type Connecting<'a>: Future + Send
+ where
+ Self: 'a;
+
+ fn connect(&'_ self) -> Self::Connecting<'_>;
+}
+
+fn call_connect<C>(c: &'_ C) -> impl '_ + Future + Send
+where
+ C: Client + Send + Sync,
+{
+ async move { c.connect().await }
+ //~^ ERROR `C` does not live long enough
+ //
+ // FIXME(#71723). This is because we infer at some point a value of
+ //
+ // impl Future<Output = <C as Client>::Connection<'_>>
+ //
+ // and then we somehow fail the WF check because `where C: 'a` is not known,
+ // but I'm not entirely sure how that comes about.
+}
+
+fn main() {}