]> git.proxmox.com Git - rustc.git/blame - src/test/ui/higher-rank-trait-bounds/normalize-under-binder/issue-62529-2.rs
New upstream version 1.67.1+dfsg1
[rustc.git] / src / test / ui / higher-rank-trait-bounds / normalize-under-binder / issue-62529-2.rs
CommitLineData
94222f64
XL
1// check-pass
2
3use std::marker::PhantomData;
4
5trait Lt<'a> {
6 type T;
7}
8struct Id<T>(PhantomData<T>);
9impl<'a,T> Lt<'a> for Id<T> {
10 type T = T;
11}
12
13struct Ref<T>(PhantomData<T>) where T: ?Sized;
14impl<'a,T> Lt<'a> for Ref<T>
15where T: 'a + Lt<'a> + ?Sized
16{
17 type T = &'a T;
18}
19struct Mut<T>(PhantomData<T>) where T: ?Sized;
20impl<'a,T> Lt<'a> for Mut<T>
21where T: 'a + Lt<'a> + ?Sized
22{
23 type T = &'a mut T;
24}
25
26struct C<I,O>(for<'a> fn(<I as Lt<'a>>::T) -> O) where I: for<'a> Lt<'a>;
27
28
29fn main() {
30 let c = C::<Id<_>,_>(|()| 3);
31 c.0(());
32
33}