]>
git.proxmox.com Git - rustc.git/blob - src/test/ui/traits/trait-upcasting/diamond.rs
3 #![feature(trait_upcasting)]
5 trait Foo
: PartialEq
<i32> + std
::fmt
::Debug
+ Send
+ Sync
{
39 trait Baz
: Bar1
+ Bar2
{
70 let baz
: &dyn Baz
= &1;
71 let _
: &dyn std
::fmt
::Debug
= baz
;
73 assert_eq
!(baz
.a(), 100);
74 assert_eq
!(baz
.b(), 200);
75 assert_eq
!(baz
.c(), 300);
76 assert_eq
!(baz
.d(), 400);
77 assert_eq
!(baz
.z(), 11);
78 assert_eq
!(baz
.y(), 12);
79 assert_eq
!(baz
.w(), 21);
80 assert_eq
!(baz
.v(), 31);
82 let bar1
: &dyn Bar1
= baz
;
83 let _
: &dyn std
::fmt
::Debug
= bar1
;
85 assert_eq
!(bar1
.a(), 100);
86 assert_eq
!(bar1
.b(), 200);
87 assert_eq
!(bar1
.z(), 11);
88 assert_eq
!(bar1
.y(), 12);
89 assert_eq
!(bar1
.w(), 21);
91 let bar2
: &dyn Bar2
= baz
;
92 let _
: &dyn std
::fmt
::Debug
= bar2
;
94 assert_eq
!(bar2
.a(), 100);
95 assert_eq
!(bar2
.c(), 300);
96 assert_eq
!(bar2
.z(), 11);
97 assert_eq
!(bar2
.y(), 12);
98 assert_eq
!(bar2
.v(), 31);
100 let foo
: &dyn Foo
= baz
;
101 let _
: &dyn std
::fmt
::Debug
= foo
;
103 assert_eq
!(foo
.a(), 100);
105 let foo
: &dyn Foo
= bar1
;
106 let _
: &dyn std
::fmt
::Debug
= foo
;
108 assert_eq
!(foo
.a(), 100);
110 let foo
: &dyn Foo
= bar2
;
111 let _
: &dyn std
::fmt
::Debug
= foo
;
113 assert_eq
!(foo
.a(), 100);