]>
Commit | Line | Data |
---|---|---|
416331ca | 1 | // build-pass (FIXME(62277): could be check-pass?) |
0731742a XL |
2 | |
3 | #![warn(order_dependent_trait_objects)] | |
4 | ||
5 | // Check that traitobject 0.1.0 compiles | |
6 | ||
7 | //! # traitobject | |
8 | //! | |
9 | //! Unsafe helpers for working with raw TraitObjects. | |
10 | ||
11 | /// A trait implemented for all trait objects. | |
12 | /// | |
13 | /// Implementations for all traits in std are provided. | |
14 | pub unsafe trait Trait {} | |
15 | ||
dc9dc135 XL |
16 | unsafe impl Trait for dyn (::std::any::Any) + Send { } |
17 | unsafe impl Trait for dyn (::std::any::Any) + Sync { } | |
18 | unsafe impl Trait for dyn (::std::any::Any) + Send + Sync { } | |
19 | unsafe impl<T: ?Sized> Trait for dyn (::std::borrow::Borrow<T>) + Send { } | |
20 | unsafe impl<T: ?Sized> Trait for dyn (::std::borrow::Borrow<T>) + Sync { } | |
21 | unsafe impl<T: ?Sized> Trait for dyn (::std::borrow::Borrow<T>) + Send + Sync { } | |
22 | unsafe impl<T: ?Sized> Trait for dyn (::std::borrow::BorrowMut<T>) + Send { } | |
23 | unsafe impl<T: ?Sized> Trait for dyn (::std::borrow::BorrowMut<T>) + Sync { } | |
24 | unsafe impl<T: ?Sized> Trait for dyn (::std::borrow::BorrowMut<T>) + Send + Sync { } | |
25 | unsafe impl<T: ?Sized> Trait for dyn (::std::convert::AsMut<T>) + Send { } | |
26 | unsafe impl<T: ?Sized> Trait for dyn (::std::convert::AsMut<T>) + Sync { } | |
27 | unsafe impl<T: ?Sized> Trait for dyn (::std::convert::AsMut<T>) + Send + Sync { } | |
28 | unsafe impl<T: ?Sized> Trait for dyn (::std::convert::AsRef<T>) + Send { } | |
29 | unsafe impl<T: ?Sized> Trait for dyn (::std::convert::AsRef<T>) + Sync { } | |
30 | unsafe impl<T: ?Sized> Trait for dyn (::std::convert::AsRef<T>) + Send + Sync { } | |
31 | unsafe impl Trait for dyn (::std::error::Error) + Send { } | |
32 | unsafe impl Trait for dyn (::std::error::Error) + Sync { } | |
33 | unsafe impl Trait for dyn (::std::error::Error) + Send + Sync { } | |
34 | unsafe impl Trait for dyn (::std::fmt::Binary) + Send { } | |
35 | unsafe impl Trait for dyn (::std::fmt::Binary) + Sync { } | |
36 | unsafe impl Trait for dyn (::std::fmt::Binary) + Send + Sync { } | |
37 | unsafe impl Trait for dyn (::std::fmt::Debug) + Send { } | |
38 | unsafe impl Trait for dyn (::std::fmt::Debug) + Sync { } | |
39 | unsafe impl Trait for dyn (::std::fmt::Debug) + Send + Sync { } | |
40 | unsafe impl Trait for dyn (::std::fmt::Display) + Send { } | |
41 | unsafe impl Trait for dyn (::std::fmt::Display) + Sync { } | |
42 | unsafe impl Trait for dyn (::std::fmt::Display) + Send + Sync { } | |
43 | unsafe impl Trait for dyn (::std::fmt::LowerExp) + Send { } | |
44 | unsafe impl Trait for dyn (::std::fmt::LowerExp) + Sync { } | |
45 | unsafe impl Trait for dyn (::std::fmt::LowerExp) + Send + Sync { } | |
46 | unsafe impl Trait for dyn (::std::fmt::LowerHex) + Send { } | |
47 | unsafe impl Trait for dyn (::std::fmt::LowerHex) + Sync { } | |
48 | unsafe impl Trait for dyn (::std::fmt::LowerHex) + Send + Sync { } | |
49 | unsafe impl Trait for dyn (::std::fmt::Octal) + Send { } | |
50 | unsafe impl Trait for dyn (::std::fmt::Octal) + Sync { } | |
51 | unsafe impl Trait for dyn (::std::fmt::Octal) + Send + Sync { } | |
52 | unsafe impl Trait for dyn (::std::fmt::Pointer) + Send { } | |
53 | unsafe impl Trait for dyn (::std::fmt::Pointer) + Sync { } | |
54 | unsafe impl Trait for dyn (::std::fmt::Pointer) + Send + Sync { } | |
55 | unsafe impl Trait for dyn (::std::fmt::UpperExp) + Send { } | |
56 | unsafe impl Trait for dyn (::std::fmt::UpperExp) + Sync { } | |
57 | unsafe impl Trait for dyn (::std::fmt::UpperExp) + Send + Sync { } | |
58 | unsafe impl Trait for dyn (::std::fmt::UpperHex) + Send { } | |
59 | unsafe impl Trait for dyn (::std::fmt::UpperHex) + Sync { } | |
60 | unsafe impl Trait for dyn (::std::fmt::UpperHex) + Send + Sync { } | |
61 | unsafe impl Trait for dyn (::std::fmt::Write) + Send { } | |
62 | unsafe impl Trait for dyn (::std::fmt::Write) + Sync { } | |
63 | unsafe impl Trait for dyn (::std::fmt::Write) + Send + Sync { } | |
64 | unsafe impl Trait for dyn (::std::hash::Hasher) + Send { } | |
65 | unsafe impl Trait for dyn (::std::hash::Hasher) + Sync { } | |
66 | unsafe impl Trait for dyn (::std::hash::Hasher) + Send + Sync { } | |
67 | unsafe impl Trait for dyn (::std::io::BufRead) + Send { } | |
68 | unsafe impl Trait for dyn (::std::io::BufRead) + Sync { } | |
69 | unsafe impl Trait for dyn (::std::io::BufRead) + Send + Sync { } | |
70 | unsafe impl Trait for dyn (::std::io::Read) + Send { } | |
71 | unsafe impl Trait for dyn (::std::io::Read) + Sync { } | |
72 | unsafe impl Trait for dyn (::std::io::Read) + Send + Sync { } | |
73 | unsafe impl Trait for dyn (::std::io::Seek) + Send { } | |
74 | unsafe impl Trait for dyn (::std::io::Seek) + Sync { } | |
75 | unsafe impl Trait for dyn (::std::io::Seek) + Send + Sync { } | |
76 | unsafe impl Trait for dyn (::std::io::Write) + Send { } | |
77 | unsafe impl Trait for dyn (::std::io::Write) + Sync { } | |
78 | unsafe impl Trait for dyn (::std::io::Write) + Send + Sync { } | |
79 | unsafe impl<T, I> Trait for dyn (::std::iter::IntoIterator<IntoIter=I, Item=T>) { } | |
80 | unsafe impl<T> Trait for dyn (::std::iter::Iterator<Item=T>) + Send { } | |
81 | unsafe impl<T> Trait for dyn (::std::iter::Iterator<Item=T>) + Sync { } | |
82 | unsafe impl<T> Trait for dyn (::std::iter::Iterator<Item=T>) + Send + Sync { } | |
83 | unsafe impl Trait for dyn (::std::marker::Send) + Send { } | |
84 | unsafe impl Trait for dyn (::std::marker::Send) + Sync { } | |
85 | unsafe impl Trait for dyn (::std::marker::Send) + Send + Sync { } | |
86 | unsafe impl Trait for dyn (::std::marker::Sync) + Send { } | |
87 | unsafe impl Trait for dyn (::std::marker::Sync) + Sync { } | |
88 | unsafe impl Trait for dyn (::std::marker::Sync) + Send + Sync { } | |
89 | unsafe impl Trait for dyn (::std::ops::Drop) + Send { } | |
90 | unsafe impl Trait for dyn (::std::ops::Drop) + Sync { } | |
91 | unsafe impl Trait for dyn (::std::ops::Drop) + Send + Sync { } | |
92 | unsafe impl Trait for dyn (::std::string::ToString) + Send { } | |
93 | unsafe impl Trait for dyn (::std::string::ToString) + Sync { } | |
94 | unsafe impl Trait for dyn (::std::string::ToString) + Send + Sync { } | |
0731742a XL |
95 | fn assert_trait<T: Trait + ?Sized>() {} |
96 | ||
97 | fn main() { | |
98 | assert_trait::<dyn Send>(); | |
99 | assert_trait::<dyn Sync>(); | |
100 | assert_trait::<dyn Send + Sync>(); | |
101 | } |