1 // Copyright 2019 The Fuchsia Authors
2 //
3 // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
4 // <LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0>, or the MIT
5 // license <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your option.
6 // This file may not be copied, modified, or distributed except according to
7 // those terms.
8 
9 #[macro_use]
10 extern crate zerocopy;
11 
main()12 fn main() {}
13 
14 //
15 // Generic errors
16 //
17 
18 #[derive(FromZeroes, FromBytes)]
19 #[repr("foo")]
20 enum Generic1 {
21     A,
22 }
23 
24 #[derive(FromZeroes, FromBytes)]
25 #[repr(foo)]
26 enum Generic2 {
27     A,
28 }
29 
30 #[derive(FromZeroes, FromBytes)]
31 #[repr(transparent)]
32 enum Generic3 {
33     A,
34 }
35 
36 #[derive(FromZeroes, FromBytes)]
37 #[repr(u8, u16)]
38 enum Generic4 {
39     A,
40 }
41 
42 #[derive(FromZeroes, FromBytes)]
43 enum Generic5 {
44     A,
45 }
46 
47 //
48 // FromZeroes errors
49 //
50 
51 #[derive(FromZeroes)]
52 enum FromZeroes1 {
53     A(u8),
54 }
55 
56 #[derive(FromZeroes)]
57 enum FromZeroes2 {
58     A,
59     B(u8),
60 }
61 
62 #[derive(FromZeroes)]
63 enum FromZeroes3 {
64     A = 1,
65     B,
66 }
67 
68 //
69 // FromBytes errors
70 //
71 
72 #[derive(FromZeroes, FromBytes)]
73 #[repr(C)]
74 enum FromBytes1 {
75     A,
76 }
77 
78 #[derive(FromZeroes, FromBytes)]
79 #[repr(usize)]
80 enum FromBytes2 {
81     A,
82 }
83 
84 #[derive(FromZeroes, FromBytes)]
85 #[repr(isize)]
86 enum FromBytes3 {
87     A,
88 }
89 
90 #[derive(FromZeroes, FromBytes)]
91 #[repr(u32)]
92 enum FromBytes4 {
93     A,
94 }
95 
96 #[derive(FromZeroes, FromBytes)]
97 #[repr(i32)]
98 enum FromBytes5 {
99     A,
100 }
101 
102 #[derive(FromZeroes, FromBytes)]
103 #[repr(u64)]
104 enum FromBytes6 {
105     A,
106 }
107 
108 #[derive(FromZeroes, FromBytes)]
109 #[repr(i64)]
110 enum FromBytes7 {
111     A,
112 }
113 
114 //
115 // Unaligned errors
116 //
117 
118 #[derive(Unaligned)]
119 #[repr(C)]
120 enum Unaligned1 {
121     A,
122 }
123 
124 #[derive(Unaligned)]
125 #[repr(u16)]
126 enum Unaligned2 {
127     A,
128 }
129 
130 #[derive(Unaligned)]
131 #[repr(i16)]
132 enum Unaligned3 {
133     A,
134 }
135 
136 #[derive(Unaligned)]
137 #[repr(u32)]
138 enum Unaligned4 {
139     A,
140 }
141 
142 #[derive(Unaligned)]
143 #[repr(i32)]
144 enum Unaligned5 {
145     A,
146 }
147 
148 #[derive(Unaligned)]
149 #[repr(u64)]
150 enum Unaligned6 {
151     A,
152 }
153 
154 #[derive(Unaligned)]
155 #[repr(i64)]
156 enum Unaligned7 {
157     A,
158 }
159 
160 #[derive(Unaligned)]
161 #[repr(usize)]
162 enum Unaligned8 {
163     A,
164 }
165 
166 #[derive(Unaligned)]
167 #[repr(isize)]
168 enum Unaligned9 {
169     A,
170 }
171 
172 #[derive(Unaligned)]
173 #[repr(u8, align(2))]
174 enum Unaligned10 {
175     A,
176 }
177 
178 #[derive(Unaligned)]
179 #[repr(i8, align(2))]
180 enum Unaligned11 {
181     A,
182 }
183 
184 #[derive(Unaligned)]
185 #[repr(align(1), align(2))]
186 enum Unaligned12 {
187     A,
188 }
189 
190 #[derive(Unaligned)]
191 #[repr(align(2), align(4))]
192 enum Unaligned13 {
193     A,
194 }
195