//@ revisions: rpass1 rpass2 pub fn foo() { bar(); baz::<()>(); } fn bar() where <() as Table>::AllColumns:, { } fn baz() where W: AsQuery, ::Query:, { } trait AsQuery { type Query; } trait UnimplementedTrait {} impl AsQuery for T where T: UnimplementedTrait, { type Query = (); } struct Wrapper(Expr); impl AsQuery for Wrapper { type Query = (); } impl AsQuery for () where Wrapper<<() as Table>::AllColumns>: AsQuery, { type Query = (); } trait Table { type AllColumns; } #[cfg(rpass1)] impl Table for () { type AllColumns = Checksum1; } #[cfg(rpass1)] struct Checksum1; #[cfg(rpass2)] impl Table for () { type AllColumns = Checksum2; } #[cfg(rpass2)] struct Checksum2; fn main() {}