//@ known-bug: #135718 struct Equal; struct Bar; trait TwiceNested {} impl TwiceNested for Bar where Bar: NestMakeEqual {} struct Sum; trait Not { fn not(); } impl

Not for Sum where Bar: NestMakeEqual, Self: Problem

, { fn not() {} } trait NestMakeEqual { type NestEq; } trait MakeEqual { type Eq; } struct Foo; impl MakeEqual for Foo { type Eq = Equal; } impl NestMakeEqual for Bar where Foo: MakeEqual, { type NestEq = O; } trait Problem {} impl Problem<()> for Sum where Bar: TwiceNested {} impl Problem for Sum where Bar: TwiceNested {} fn main() { Sum::not(); }