]>
git.proxmox.com Git - rustc.git/blob - src/test/ui/traits/alias/object-wf.rs
3 // This test checks that trait objects involving trait aliases are well-formed.
5 #![feature(trait_alias)]
9 trait _0
= Send
+ Sync
;
13 trait _1
= _0
+ Send
+ Sync
;
15 use std
::marker
::Unpin
;
20 let _
: Box
<dyn Unpin
+ _1
+ Send
+ Sync
>;
23 // Include object safe traits:
26 let _
: Box
<dyn Obj
+ _0
>;
27 let _
: Box
<dyn Obj
+ _1
>;
28 let _
: Box
<dyn Obj
+ _1
+ _0
>;
31 // And when the object safe trait is in a trait alias:
36 let _
: Box
<dyn _2
+ _0
>;
37 let _
: Box
<dyn _2
+ _1
>;
38 let _
: Box
<dyn _2
+ _1
+ _0
>;
41 // And it should also work when that trait is has auto traits to the right of it.
43 trait _3
= Obj
+ Unpin
;
46 let _
: Box
<dyn _3
+ _0
>;
47 let _
: Box
<dyn _3
+ _1
>;
48 let _
: Box
<dyn _3
+ _1
+ _0
>;
51 // Nest the trait deeply:
54 trait _5
= _4
+ Sync
+ _0
+ Send
;
55 trait _6
= _5
+ Send
+ _1
+ Sync
;
58 let _
: Box
<dyn _6
+ _0
>;
59 let _
: Box
<dyn _6
+ _1
>;
60 let _
: Box
<dyn _6
+ _1
+ _0
>;
63 // Just nest the trait alone:
73 // First bound is auto trait:
75 trait _10
= Send
+ Obj
;
76 trait _11
= Obj
+ Send
;
77 trait _12
= Sync
+ _11
;
78 trait _13
= Send
+ _12
;