1 #![feature(optin_builtin_traits)]
2 #![allow(order_dependent_trait_objects)]
4 // Check that the issue #33140 hack does not allow unintended things.
10 impl Trait0 for dyn Send {}
11 impl Trait0 for dyn Send {}
13 // Problem 1: associated types
18 impl Trait1 for dyn Send {}
19 impl Trait1 for dyn Send {}
22 // Problem 2: negative impl
26 impl Trait2 for dyn Send {}
27 impl !Trait2 for dyn Send {}
31 // Problem 3: type parameter
32 trait Trait3<T: ?Sized> {
35 impl Trait3<dyn Sync> for dyn Send {}
36 impl Trait3<dyn Sync> for dyn Send {}
39 // Problem 4a: not a trait object - generic
43 impl<T: ?Sized> Trait4a for T {}
44 impl Trait4a for dyn Send {}
47 // Problem 4b: not a trait object - misc
51 impl Trait4b for () {}
52 impl Trait4b for () {}
55 // Problem 4c: not a principal-less trait object
59 impl Trait4c for dyn Trait1 + Send {}
60 impl Trait4c for dyn Trait1 + Send {}
63 // Problem 4d: lifetimes
67 impl<'a> Trait4d for dyn Send + 'a {}
68 impl<'a> Trait4d for dyn Send + 'a {}
72 // Problem 5: where-clauses
76 impl Trait5 for dyn Send {}
77 impl Trait5 for dyn Send where u32: Copy {}