blob: 4ae8d84eba11aa09adc639f7adbce89d7bcd1b5c [file] [log] [blame] [edit]
//@ build-fail
// Regression test for issue #137823
// Tests that recursive monomorphization with associated types produces
// a proper "recursion limit" error instead of an ICE.
fn convert<S: Converter>() -> S::Out {
convert2::<ConvertWrap<S>>()
//~^ ERROR: reached the recursion limit while instantiating
}
fn convert2<S: Converter>() -> S::Out {
convert::<S>()
}
fn main() {
convert::<Ser>();
}
trait Converter {
type Out;
}
struct Ser;
impl Converter for Ser {
type Out = ();
}
struct ConvertWrap<S> {
_d: S,
}
impl<S> Converter for ConvertWrap<S>
where
S: Converter,
{
type Out = S::Out;
}