40 lines
570 B
Rust
40 lines
570 B
Rust
// 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();
|
|
}
|