11// run-pass
22
33#![ feature( trait_upcasting) ]
4+ #![ allow( incomplete_features) ]
45
56trait Foo : PartialEq < i32 > + std:: fmt:: Debug + Send + Sync {
6- fn a ( & self ) -> i32 { 10 }
7+ fn a ( & self ) -> i32 {
8+ 10
9+ }
710
8- fn z ( & self ) -> i32 { 11 }
11+ fn z ( & self ) -> i32 {
12+ 11
13+ }
914
10- fn y ( & self ) -> i32 { 12 }
15+ fn y ( & self ) -> i32 {
16+ 12
17+ }
1118}
1219
1320trait Bar1 : Foo {
14- fn b ( & self ) -> i32 { 20 }
21+ fn b ( & self ) -> i32 {
22+ 20
23+ }
1524
16- fn w ( & self ) -> i32 { 21 }
25+ fn w ( & self ) -> i32 {
26+ 21
27+ }
1728}
1829
1930trait Bar2 : Foo {
20- fn c ( & self ) -> i32 { 30 }
31+ fn c ( & self ) -> i32 {
32+ 30
33+ }
2134
22- fn v ( & self ) -> i32 { 31 }
35+ fn v ( & self ) -> i32 {
36+ 31
37+ }
2338}
2439
2540trait Baz : Bar1 + Bar2 {
26- fn d ( & self ) -> i32 { 40 }
41+ fn d ( & self ) -> i32 {
42+ 40
43+ }
2744}
2845
2946impl Foo for i32 {
30- fn a ( & self ) -> i32 { 100 }
47+ fn a ( & self ) -> i32 {
48+ 100
49+ }
3150}
3251
3352impl Bar1 for i32 {
34- fn b ( & self ) -> i32 { 200 }
53+ fn b ( & self ) -> i32 {
54+ 200
55+ }
3556}
3657
3758impl Bar2 for i32 {
38- fn c ( & self ) -> i32 { 300 }
59+ fn c ( & self ) -> i32 {
60+ 300
61+ }
3962}
4063
4164impl Baz for i32 {
42- fn d ( & self ) -> i32 { 400 }
65+ fn d ( & self ) -> i32 {
66+ 400
67+ }
4368}
4469
4570fn main ( ) {
4671 let baz: & dyn Baz = & 1 ;
4772 let _: & dyn std:: fmt:: Debug = baz;
48- let _: & ( dyn Send + Sync ) = baz;
49- let _: & dyn Send = baz;
50- let _: & dyn Sync = baz;
5173 assert_eq ! ( * baz, 1 ) ;
5274 assert_eq ! ( baz. a( ) , 100 ) ;
5375 assert_eq ! ( baz. b( ) , 200 ) ;
@@ -60,9 +82,6 @@ fn main() {
6082
6183 let bar1: & dyn Bar1 = baz;
6284 let _: & dyn std:: fmt:: Debug = bar1;
63- let _: & ( dyn Send + Sync ) = bar1;
64- let _: & dyn Send = bar1;
65- let _: & dyn Sync = bar1;
6685 assert_eq ! ( * bar1, 1 ) ;
6786 assert_eq ! ( bar1. a( ) , 100 ) ;
6887 assert_eq ! ( bar1. b( ) , 200 ) ;
@@ -72,9 +91,6 @@ fn main() {
7291
7392 let bar2: & dyn Bar2 = baz;
7493 let _: & dyn std:: fmt:: Debug = bar2;
75- let _: & ( dyn Send + Sync ) = bar2;
76- let _: & dyn Send = bar2;
77- let _: & dyn Sync = bar2;
7894 assert_eq ! ( * bar2, 1 ) ;
7995 assert_eq ! ( bar2. a( ) , 100 ) ;
8096 assert_eq ! ( bar2. c( ) , 300 ) ;
@@ -84,25 +100,16 @@ fn main() {
84100
85101 let foo: & dyn Foo = baz;
86102 let _: & dyn std:: fmt:: Debug = foo;
87- let _: & ( dyn Send + Sync ) = foo;
88- let _: & dyn Send = foo;
89- let _: & dyn Sync = foo;
90103 assert_eq ! ( * foo, 1 ) ;
91104 assert_eq ! ( foo. a( ) , 100 ) ;
92105
93106 let foo: & dyn Foo = bar1;
94107 let _: & dyn std:: fmt:: Debug = foo;
95- let _: & ( dyn Send + Sync ) = foo;
96- let _: & dyn Send = foo;
97- let _: & dyn Sync = foo;
98108 assert_eq ! ( * foo, 1 ) ;
99109 assert_eq ! ( foo. a( ) , 100 ) ;
100110
101111 let foo: & dyn Foo = bar2;
102112 let _: & dyn std:: fmt:: Debug = foo;
103- let _: & ( dyn Send + Sync ) = foo;
104- let _: & dyn Send = foo;
105- let _: & dyn Sync = foo;
106113 assert_eq ! ( * foo, 1 ) ;
107114 assert_eq ! ( foo. a( ) , 100 ) ;
108115}
0 commit comments