// Regression test for #80953. Hitting the recursion limit in projection // is non-fatal. The above code, minimised from wundergraph shows a case // where this is relied on. // check-pass struct AlternateTable {} struct AlternateQuery {} pub trait Query {} pub trait AsQuery { type Query; } impl AsQuery for T { type Query = Self; } impl AsQuery for AlternateTable { type Query = AlternateQuery; } pub trait Table: AsQuery { type PrimaryKey; } impl Table for AlternateTable { type PrimaryKey = (); } pub trait FilterDsl { type Output; } pub type Filter = >::Output; impl FilterDsl for T where T: Table, T::Query: FilterDsl, { type Output = Filter; } impl FilterDsl for AlternateQuery { type Output = &'static str; } pub trait HandleDelete { type Filter; } impl HandleDelete for T where T: Table, T::Query: FilterDsl, Filter: , { type Filter = Filter; } fn main() { let x: ::Filter = "Hello, world"; println!("{}", x); }