]> git.lizzy.rs Git - rust.git/blob - src/test/ui/object-safety/object-safety-generics.rs
Rollup merge of #57107 - mjbshaw:thread_local_test, r=nikomatsakis
[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
5 trait Bar {
6     fn bar<T>(&self, t: T);
7 }
8
9 trait Quux {
10     fn bar<T>(&self, t: T)
11         where Self : Sized;
12 }
13
14 fn make_bar<T:Bar>(t: &T) -> &Bar {
15         //~^ ERROR E0038
16     t
17 }
18
19 fn make_bar_explicit<T:Bar>(t: &T) -> &Bar {
20     //~^ ERROR E0038
21     t as &Bar
22 }
23
24 fn make_quux<T:Quux>(t: &T) -> &Quux {
25     t
26 }
27
28 fn make_quux_explicit<T:Quux>(t: &T) -> &Quux {
29     t as &Quux
30 }
31
32 fn main() {
33 }