// check-pass #![allow(dead_code)] trait Make { type Out; fn make() -> Self::Out; } impl Make for () { type Out = (); fn make() -> Self::Out {} } // Also make sure we don't hit an ICE when the projection can't be known fn f() -> ::Out { loop {} } // ...and that it works with a blanket impl trait Tr { type Assoc; } impl Tr for T { type Assoc = (); } fn g() -> ::Assoc { } fn main() {}