| //@ run-pass | |
| // Regression test for #55846, which once caused an ICE. | |
| use std::marker::PhantomData; | |
| struct Foo; | |
| struct Bar<A> { | |
| a: PhantomData<A>, | |
| } | |
| impl Fooifier for Foo { | |
| type Assoc = Foo; | |
| } | |
| trait Fooifier { | |
| type Assoc; | |
| } | |
| trait Barifier<H> { | |
| fn barify(); | |
| } | |
| impl<H> Barifier<H> for Bar<H> { | |
| fn barify() { | |
| println!("All correct!"); | |
| } | |
| } | |
| impl Bar<<Foo as Fooifier>::Assoc> { | |
| fn this_shouldnt_crash() { | |
| <Self as Barifier<<Foo as Fooifier>::Assoc>>::barify(); | |
| } | |
| } | |
| fn main() { | |
| Bar::<Foo>::this_shouldnt_crash(); | |
| } |