// Check that we can statically dispatch methods for object // unsafe trait objects, directly and indirectly // // check-pass #![feature(object_safe_for_dispatch)] trait Statics { fn plain() {} fn generic<T>() {} } trait Trait: Sized {} impl<'a> Statics for dyn Trait + 'a {} fn static_poly<T: Statics + ?Sized>() { T::plain(); T::generic::<usize>(); } fn inferred_poly<T: Statics + ?Sized>(t: &T) { static_poly::<T>(); T::plain(); T::generic::<usize>(); } fn call(t: &dyn Trait) { static_poly::<dyn Trait>(); inferred_poly(t); } fn main() { static_poly::<dyn Trait>(); <dyn Trait>::plain(); <dyn Trait>::generic::<usize>() }