]> git.lizzy.rs Git - rust.git/blob - src/test/ui/deriving/issue-89188-gat-hrtb.rs
:arrow_up: rust-analyzer
[rust.git] / src / test / ui / deriving / issue-89188-gat-hrtb.rs
1 // check-pass
2
3 #![feature(generic_associated_types)]
4
5 trait CallWithShim: Sized {
6     type Shim<'s>
7     where
8         Self: 's;
9 }
10
11 #[derive(Clone)]
12 struct ShimMethod<T: CallWithShim + 'static>(pub &'static dyn for<'s> Fn(&'s mut T::Shim<'s>));
13
14 trait CallWithShim2: Sized {
15     type Shim<T>;
16 }
17
18 struct S<'s>(&'s ());
19
20 #[derive(Clone)]
21 struct ShimMethod2<T: CallWithShim2 + 'static>(pub &'static dyn for<'s> Fn(&'s mut T::Shim<S<'s>>));
22
23 trait Trait<'s, 't, 'u> {}
24
25 #[derive(Clone)]
26 struct ShimMethod3<T: CallWithShim2 + 'static>(
27     pub  &'static dyn for<'s> Fn(
28         &'s mut T::Shim<dyn for<'t> Fn(&'s mut T::Shim<dyn for<'u> Trait<'s, 't, 'u>>)>,
29     ),
30 );
31
32 trait Trait2 {
33     type As;
34 }
35
36 #[derive(Clone)]
37 struct ShimMethod4<T: Trait2 + 'static>(pub &'static dyn for<'s> Fn(&'s mut T::As));
38
39 pub fn main() {}