]> git.lizzy.rs Git - rust.git/blob - src/test/ui/object-safety/object-safety-generics.rs
Auto merge of #106349 - LeSeulArtichaut:dyn-star-tracking-issue, r=jackh726
[rust.git] / src / test / ui / object-safety / object-safety-generics.rs
1 // Check that we correctly prevent users from making trait objects
2 // from traits with generic methods, unless `where Self : Sized` is
3 // present.
4 // revisions: curr object_safe_for_dispatch
5
6 #![cfg_attr(object_safe_for_dispatch, feature(object_safe_for_dispatch))]
7
8
9 trait Bar {
10     fn bar<T>(&self, t: T);
11 }
12
13 trait Quux {
14     fn bar<T>(&self, t: T)
15         where Self : Sized;
16 }
17
18 fn make_bar<T:Bar>(t: &T) -> &dyn Bar {
19     //[curr]~^ ERROR E0038
20     t
21     //[object_safe_for_dispatch]~^ ERROR E0038
22 }
23
24 fn make_bar_explicit<T:Bar>(t: &T) -> &dyn Bar {
25     //[curr]~^ ERROR E0038
26     t as &dyn Bar
27     //[object_safe_for_dispatch]~^ ERROR E0038
28 }
29
30 fn make_quux<T:Quux>(t: &T) -> &dyn Quux {
31     t
32 }
33
34 fn make_quux_explicit<T:Quux>(t: &T) -> &dyn Quux {
35     t as &dyn Quux
36 }
37
38 fn main() {
39 }