• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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(FromBytes)]
19 #[repr("foo")]
20 enum Generic1 {
21     A,
22 }
23 
24 #[derive(FromBytes)]
25 #[repr(foo)]
26 enum Generic2 {
27     A,
28 }
29 
30 #[derive(FromBytes)]
31 #[repr(transparent)]
32 enum Generic3 {
33     A,
34 }
35 
36 #[derive(FromBytes)]
37 #[repr(u8, u16)]
38 enum Generic4 {
39     A,
40 }
41 
42 #[derive(FromBytes)]
43 enum Generic5 {
44     A,
45 }
46 
47 //
48 // Immutable errors
49 //
50 
51 #[derive(Immutable)]
52 enum Immutable1 {
53     A(core::cell::UnsafeCell<()>),
54 }
55 
56 #[derive(Immutable)]
57 enum Never {}
58 
59 #[derive(Immutable)]
60 enum Immutable2 {
61     Uninhabited(Never, core::cell::UnsafeCell<u8>),
62     Inhabited(u8),
63 }
64 
65 //
66 // TryFromBytes errors
67 //
68 
69 #[derive(TryFromBytes)]
70 enum TryFromBytes1 {
71     A,
72 }
73 
74 #[derive(TryFromBytes)]
75 enum TryFromBytes2 {
76     A,
77     B(u8),
78 }
79 
80 struct NotTryFromBytes;
81 
82 #[derive(TryFromBytes)]
83 #[repr(u8)]
84 enum TryFromBytes3 {
85     A(NotTryFromBytes),
86 }
87 
88 //
89 // FromZeros errors
90 //
91 
92 #[derive(FromZeros)]
93 enum FromZeros1 {
94     A(u8),
95 }
96 
97 #[derive(FromZeros)]
98 enum FromZeros2 {
99     A,
100     B(u8),
101 }
102 
103 #[derive(FromZeros)]
104 enum FromZeros3 {
105     A = 1,
106     B,
107 }
108 
109 #[derive(FromZeros)]
110 #[repr(u8)]
111 enum FromZeros4 {
112     A = 1,
113     B = 2,
114 }
115 
116 const NEGATIVE_ONE: i8 = -1;
117 
118 #[derive(FromZeros)]
119 #[repr(i8)]
120 enum FromZeros5 {
121     A = NEGATIVE_ONE,
122     B,
123 }
124 
125 struct NotFromZeros;
126 
127 #[derive(FromZeros)]
128 #[repr(u8)]
129 enum FromZeros6 {
130     A(NotFromZeros),
131 }
132 
133 #[derive(FromZeros)]
134 #[repr(u8)]
135 enum FromZeros7 {
136     A = 1,
137     B(NotFromZeros),
138 }
139 
140 //
141 // FromBytes errors
142 //
143 
144 #[derive(FromBytes)]
145 enum FromBytes1 {
146     A,
147 }
148 
149 #[derive(FromBytes)]
150 #[repr(C)]
151 enum FromBytes2 {
152     A,
153 }
154 
155 #[derive(FromBytes)]
156 #[repr(usize)]
157 enum FromBytes3 {
158     A,
159 }
160 
161 #[derive(FromBytes)]
162 #[repr(isize)]
163 enum FromBytes4 {
164     A,
165 }
166 
167 #[derive(FromBytes)]
168 #[repr(u32)]
169 enum FromBytes5 {
170     A,
171 }
172 
173 #[derive(FromBytes)]
174 #[repr(i32)]
175 enum FromBytes6 {
176     A,
177 }
178 
179 #[derive(FromBytes)]
180 #[repr(u64)]
181 enum FromBytes7 {
182     A,
183 }
184 
185 #[derive(FromBytes)]
186 #[repr(i64)]
187 enum FromBytes8 {
188     A,
189 }
190 
191 #[derive(FromBytes)]
192 #[repr(u8)]
193 enum FooU8 {
194     Variant0,
195     Variant1,
196     Variant2,
197     Variant3,
198     Variant4,
199     Variant5,
200     Variant6,
201     Variant7,
202     Variant8,
203     Variant9,
204     Variant10,
205     Variant11,
206     Variant12,
207     Variant13,
208     Variant14,
209     Variant15,
210     Variant16,
211     Variant17,
212     Variant18,
213     Variant19,
214     Variant20,
215     Variant21,
216     Variant22,
217     Variant23,
218     Variant24,
219     Variant25,
220     Variant26,
221     Variant27,
222     Variant28,
223     Variant29,
224     Variant30,
225     Variant31,
226     Variant32,
227     Variant33,
228     Variant34,
229     Variant35,
230     Variant36,
231     Variant37,
232     Variant38,
233     Variant39,
234     Variant40,
235     Variant41,
236     Variant42,
237     Variant43,
238     Variant44,
239     Variant45,
240     Variant46,
241     Variant47,
242     Variant48,
243     Variant49,
244     Variant50,
245     Variant51,
246     Variant52,
247     Variant53,
248     Variant54,
249     Variant55,
250     Variant56,
251     Variant57,
252     Variant58,
253     Variant59,
254     Variant60,
255     Variant61,
256     Variant62,
257     Variant63,
258     Variant64,
259     Variant65,
260     Variant66,
261     Variant67,
262     Variant68,
263     Variant69,
264     Variant70,
265     Variant71,
266     Variant72,
267     Variant73,
268     Variant74,
269     Variant75,
270     Variant76,
271     Variant77,
272     Variant78,
273     Variant79,
274     Variant80,
275     Variant81,
276     Variant82,
277     Variant83,
278     Variant84,
279     Variant85,
280     Variant86,
281     Variant87,
282     Variant88,
283     Variant89,
284     Variant90,
285     Variant91,
286     Variant92,
287     Variant93,
288     Variant94,
289     Variant95,
290     Variant96,
291     Variant97,
292     Variant98,
293     Variant99,
294     Variant100,
295     Variant101,
296     Variant102,
297     Variant103,
298     Variant104,
299     Variant105,
300     Variant106,
301     Variant107,
302     Variant108,
303     Variant109,
304     Variant110,
305     Variant111,
306     Variant112,
307     Variant113,
308     Variant114,
309     Variant115,
310     Variant116,
311     Variant117,
312     Variant118,
313     Variant119,
314     Variant120,
315     Variant121,
316     Variant122,
317     Variant123,
318     Variant124,
319     Variant125,
320     Variant126,
321     Variant127,
322     Variant128,
323     Variant129,
324     Variant130,
325     Variant131,
326     Variant132,
327     Variant133,
328     Variant134,
329     Variant135,
330     Variant136,
331     Variant137,
332     Variant138,
333     Variant139,
334     Variant140,
335     Variant141,
336     Variant142,
337     Variant143,
338     Variant144,
339     Variant145,
340     Variant146,
341     Variant147,
342     Variant148,
343     Variant149,
344     Variant150,
345     Variant151,
346     Variant152,
347     Variant153,
348     Variant154,
349     Variant155,
350     Variant156,
351     Variant157,
352     Variant158,
353     Variant159,
354     Variant160,
355     Variant161,
356     Variant162,
357     Variant163,
358     Variant164,
359     Variant165,
360     Variant166,
361     Variant167,
362     Variant168,
363     Variant169,
364     Variant170,
365     Variant171,
366     Variant172,
367     Variant173,
368     Variant174,
369     Variant175,
370     Variant176,
371     Variant177,
372     Variant178,
373     Variant179,
374     Variant180,
375     Variant181,
376     Variant182,
377     Variant183,
378     Variant184,
379     Variant185,
380     Variant186,
381     Variant187,
382     Variant188,
383     Variant189,
384     Variant190,
385     Variant191,
386     Variant192,
387     Variant193,
388     Variant194,
389     Variant195,
390     Variant196,
391     Variant197,
392     Variant198,
393     Variant199,
394     Variant200,
395     Variant201,
396     Variant202,
397     Variant203,
398     Variant204,
399     Variant205,
400     Variant206,
401     Variant207,
402     Variant208,
403     Variant209,
404     Variant210,
405     Variant211,
406     Variant212,
407     Variant213,
408     Variant214,
409     Variant215,
410     Variant216,
411     Variant217,
412     Variant218,
413     Variant219,
414     Variant220,
415     Variant221,
416     Variant222,
417     Variant223,
418     Variant224,
419     Variant225,
420     Variant226,
421     Variant227,
422     Variant228,
423     Variant229,
424     Variant230,
425     Variant231,
426     Variant232,
427     Variant233,
428     Variant234,
429     Variant235,
430     Variant236,
431     Variant237,
432     Variant238,
433     Variant239,
434     Variant240,
435     Variant241,
436     Variant242,
437     Variant243,
438     Variant244,
439     Variant245,
440     Variant246,
441     Variant247,
442     Variant248,
443     Variant249,
444     Variant250,
445     Variant251,
446     Variant252,
447     Variant253,
448     Variant254,
449     Variant255(bool),
450 }
451 
452 //
453 // Unaligned errors
454 //
455 
456 #[derive(Unaligned)]
457 #[repr(C)]
458 enum Unaligned1 {
459     A,
460 }
461 
462 #[derive(Unaligned)]
463 #[repr(u16)]
464 enum Unaligned2 {
465     A,
466 }
467 
468 #[derive(Unaligned)]
469 #[repr(i16)]
470 enum Unaligned3 {
471     A,
472 }
473 
474 #[derive(Unaligned)]
475 #[repr(u32)]
476 enum Unaligned4 {
477     A,
478 }
479 
480 #[derive(Unaligned)]
481 #[repr(i32)]
482 enum Unaligned5 {
483     A,
484 }
485 
486 #[derive(Unaligned)]
487 #[repr(u64)]
488 enum Unaligned6 {
489     A,
490 }
491 
492 #[derive(Unaligned)]
493 #[repr(i64)]
494 enum Unaligned7 {
495     A,
496 }
497 
498 #[derive(Unaligned)]
499 #[repr(usize)]
500 enum Unaligned8 {
501     A,
502 }
503 
504 #[derive(Unaligned)]
505 #[repr(isize)]
506 enum Unaligned9 {
507     A,
508 }
509 
510 #[derive(Unaligned)]
511 #[repr(u8, align(2))]
512 enum Unaligned10 {
513     A,
514 }
515 
516 #[derive(Unaligned)]
517 #[repr(i8, align(2))]
518 enum Unaligned11 {
519     A,
520 }
521 
522 #[derive(Unaligned)]
523 #[repr(align(1), align(2))]
524 enum Unaligned12 {
525     A,
526 }
527 
528 #[derive(Unaligned)]
529 #[repr(align(2), align(4))]
530 enum Unaligned13 {
531     A,
532 }
533 
534 //
535 // IntoBytes errors
536 //
537 
538 #[derive(IntoBytes)]
539 #[repr(u8)]
540 enum IntoBytes1 {
541     A,
542     B(u8),
543 }
544 
545 #[derive(IntoBytes)]
546 #[repr(C, align(4))]
547 struct Align4IntoBytes(u32);
548 
549 #[derive(IntoBytes)]
550 #[repr(u8)]
551 enum IntoBytes2 {
552     A(Align4IntoBytes),
553 }
554 
555 #[derive(IntoBytes)]
556 #[repr(u32)]
557 enum IntoBytes3 {
558     A(u32),
559     B(u16),
560 }
561 
562 #[derive(IntoBytes)]
563 enum IntoBytes4 {
564     A(u32),
565     B(u16),
566 }
567 
568 #[derive(IntoBytes)]
569 enum IntoBytes5 {
570     A(u32),
571 }
572 
573 #[derive(IntoBytes)]
574 #[repr(u8)]
575 enum IntoBytes6<T> {
576     A(T),
577 }
578