diff options
Diffstat (limited to 'tests/ui/generic-associated-types/issue-92096.rs')
-rw-r--r-- | tests/ui/generic-associated-types/issue-92096.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/ui/generic-associated-types/issue-92096.rs b/tests/ui/generic-associated-types/issue-92096.rs new file mode 100644 index 000000000..e285af666 --- /dev/null +++ b/tests/ui/generic-associated-types/issue-92096.rs @@ -0,0 +1,28 @@ +// edition:2018 + +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() {} |