]>
Commit | Line | Data |
---|---|---|
e74abb32 XL |
1 | // revisions: curr object_safe_for_dispatch |
2 | ||
3 | #![cfg_attr(object_safe_for_dispatch, feature(object_safe_for_dispatch))] | |
abe05a73 XL |
4 | |
5 | use std::rc::Rc; | |
6 | ||
7 | trait Foo { | |
a1dfa0c6 | 8 | fn foo(self: &Rc<Self>) -> usize; |
abe05a73 XL |
9 | } |
10 | ||
11 | trait Bar { | |
a1dfa0c6 XL |
12 | fn foo(self: &Rc<Self>) -> usize where Self: Sized; |
13 | fn bar(self: Rc<Self>) -> usize; | |
abe05a73 XL |
14 | } |
15 | ||
16 | impl Foo for usize { | |
a1dfa0c6 XL |
17 | fn foo(self: &Rc<Self>) -> usize { |
18 | **self | |
abe05a73 XL |
19 | } |
20 | } | |
21 | ||
22 | impl Bar for usize { | |
a1dfa0c6 XL |
23 | fn foo(self: &Rc<Self>) -> usize { |
24 | **self | |
abe05a73 XL |
25 | } |
26 | ||
a1dfa0c6 | 27 | fn bar(self: Rc<Self>) -> usize { |
abe05a73 XL |
28 | *self |
29 | } | |
30 | } | |
31 | ||
32 | fn make_foo() { | |
dc9dc135 | 33 | let x = Rc::new(5usize) as Rc<dyn Foo>; |
e74abb32 XL |
34 | //[curr]~^ ERROR E0038 |
35 | //[curr]~| ERROR E0038 | |
36 | //[object_safe_for_dispatch]~^^^ ERROR E0038 | |
abe05a73 XL |
37 | } |
38 | ||
39 | fn make_bar() { | |
dc9dc135 | 40 | let x = Rc::new(5usize) as Rc<dyn Bar>; |
abe05a73 XL |
41 | x.bar(); |
42 | } | |
43 | ||
44 | fn main() {} |