]> git.lizzy.rs Git - rust.git/blob - tests/ui/rfc-2027-object-safe-for-dispatch/static-dispatch-unsafe-object.rs
Auto merge of #101138 - Rejyr:diagnostic-migration-rustc-lint-pt2, r=davidtwco
[rust.git] / tests / ui / rfc-2027-object-safe-for-dispatch / static-dispatch-unsafe-object.rs
1 // Check that we can statically dispatch methods for object
2 // unsafe trait objects, directly and indirectly
3 //
4 // check-pass
5
6 #![feature(object_safe_for_dispatch)]
7
8 trait Statics {
9     fn plain() {}
10     fn generic<T>() {}
11 }
12
13 trait Trait: Sized {}
14
15 impl<'a> Statics for dyn Trait + 'a {}
16
17 fn static_poly<T: Statics + ?Sized>() {
18     T::plain();
19     T::generic::<usize>();
20 }
21
22 fn inferred_poly<T: Statics + ?Sized>(t: &T) {
23     static_poly::<T>();
24     T::plain();
25     T::generic::<usize>();
26 }
27
28 fn call(t: &dyn Trait) {
29     static_poly::<dyn Trait>();
30     inferred_poly(t);
31 }
32
33 fn main() {
34     static_poly::<dyn Trait>();
35     <dyn Trait>::plain();
36     <dyn Trait>::generic::<usize>()
37 }