]> git.proxmox.com Git - rustc.git/blob - src/test/ui/object-safety/object-safety-generics.rs
Update unsuspicious file list
[rustc.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 }