// Regression test for #61311 | |
// We would ICE after failing to normalize `Self::Proj` in the `impl` below. | |
//@ check-pass | |
pub struct Unit; | |
trait Obj {} | |
trait Bound {} | |
impl Bound for Unit {} | |
pub trait HasProj { | |
type Proj; | |
} | |
impl<T> HasProj for T { | |
type Proj = Unit; | |
} | |
trait HasProjFn { | |
type Proj; | |
fn the_fn(_: Self::Proj); | |
} | |
impl HasProjFn for Unit | |
where | |
Box<dyn Obj + 'static>: HasProj, | |
<Box<dyn Obj + 'static> as HasProj>::Proj: Bound, | |
{ | |
type Proj = Unit; | |
fn the_fn(_: Self::Proj) {} | |
} | |
fn main() {} |