]>
git.proxmox.com Git - rustc.git/blob - src/test/ui/generic-associated-types/issue-91139.rs
7 impl<T
> Foo
<T
> for () {
14 let _
: for<'a
> fn(<() as Foo
<T
>>::Type
<'a
>, &'a T
) = |_
, _
| ();
15 //~^ ERROR `T` does not live long enough
16 //~| ERROR `T` does not live long enough
17 //~| ERROR `T` does not live long enough
18 //~| ERROR `T` does not live long enough
19 //~| ERROR `T` does not live long enough
20 //~| ERROR `T` does not live long enough
21 //~| ERROR `T` does not live long enough
22 //~| ERROR `T` does not live long enough
23 //~| ERROR `T` may not live long enough
25 // FIXME: This error is bogus, but it arises because we try to validate
26 // that `<() as Foo<T>>::Type<'a>` is valid, which requires proving
27 // that `T: 'a`. Since `'a` is higher-ranked, this becomes
28 // `for<'a> T: 'a`, which is not true. Of course, the error is bogus
29 // because there *ought* to be an implied bound stating that `'a` is
30 // not any lifetime but specifically
31 // "some `'a` such that `<() as Foo<T>>::Type<'a>" is valid".