]> git.proxmox.com Git - rustc.git/blame - src/test/ui/self/arbitrary-self-types-not-object-safe.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / src / test / ui / self / arbitrary-self-types-not-object-safe.rs
CommitLineData
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
5use std::rc::Rc;
6
7trait Foo {
a1dfa0c6 8 fn foo(self: &Rc<Self>) -> usize;
abe05a73
XL
9}
10
11trait Bar {
a1dfa0c6
XL
12 fn foo(self: &Rc<Self>) -> usize where Self: Sized;
13 fn bar(self: Rc<Self>) -> usize;
abe05a73
XL
14}
15
16impl Foo for usize {
a1dfa0c6
XL
17 fn foo(self: &Rc<Self>) -> usize {
18 **self
abe05a73
XL
19 }
20}
21
22impl 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
32fn 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
39fn make_bar() {
dc9dc135 40 let x = Rc::new(5usize) as Rc<dyn Bar>;
abe05a73
XL
41 x.bar();
42}
43
44fn main() {}