1 // Test that `impl MyTrait<'_> for &i32` is equivalent to `impl<'a,
2 // 'b> MyTrait<'a> for &'b i32`.
10 // This is equivalent to `MyTrait<'a> for &'b i32`, which is proven by
12 impl MyTrait<'_> for &i32 {
15 // When called, T will be `&'x i32` for some `'x`, so since we can
16 // prove that `&'x i32: for<'a> MyTrait<'a>, then we know that the
17 // lifetime parameter above is disconnected.
18 fn impls_my_trait<T: for<'a> MyTrait<'a>>() { }
20 fn impls_my_trait_val<T: for<'a> MyTrait<'a>>(_: T) {
21 impls_my_trait::<T>();
24 fn random_where_clause()
25 where for<'a, 'b> &'a i32: MyTrait<'b> { }
30 impls_my_trait_val(f);
32 impls_my_trait::<&'static i32>();
34 random_where_clause();