| // Test that `impl MyTrait for Foo<'_>` works. | |
| //@ run-pass | |
| #![allow(warnings)] | |
| trait MyTrait { } | |
| struct Foo<'a> { x: &'a u32 } | |
| impl MyTrait for Foo<'_> { | |
| } | |
| fn impls_my_trait<T: MyTrait>() { } | |
| fn impls_my_trait_val<T: MyTrait>(_: T) { | |
| impls_my_trait::<T>(); | |
| } | |
| fn random_where_clause() | |
| where for<'a> Foo<'a>: MyTrait { } | |
| fn main() { | |
| let x = 22; | |
| let f = Foo { x: &x }; | |
| // This type is `Foo<'x>` for a local lifetime `'x`; so the impl | |
| // must apply to any lifetime to apply to this. | |
| impls_my_trait_val(f); | |
| impls_my_trait::<Foo<'static>>(); | |
| random_where_clause(); | |
| } |