1 // check-pass
2 
3 pub trait D {}
4 pub struct DT;
5 impl D for DT {}
6 
7 pub trait A<R: D>: Sized {
8     type AS;
9 }
10 
11 pub struct As<R: D>(R);
12 
13 pub struct AT;
14 impl<R: D> A<R> for AT {
15     type AS = As<R>;
16 }
17 
18 #[repr(packed)]
19 struct S(<AT as A<DT>>::AS);
20 
main()21 fn main() {}
22