// Copyright 2019 The Fuchsia Authors // // Licensed under a BSD-style license , Apache License, Version 2.0 // , or the MIT // license , at your option. // This file may not be copied, modified, or distributed except according to // those terms. #[macro_use] extern crate zerocopy; fn main() {} // // Generic errors // #[derive(FromBytes)] #[repr("foo")] enum Generic1 { A, } #[derive(FromBytes)] #[repr(foo)] enum Generic2 { A, } #[derive(FromBytes)] #[repr(transparent)] enum Generic3 { A, } #[derive(FromBytes)] #[repr(u8, u16)] enum Generic4 { A, } #[derive(FromBytes)] enum Generic5 { A, } // // Immutable errors // #[derive(Immutable)] enum Immutable1 { A(core::cell::UnsafeCell<()>), } #[derive(Immutable)] enum Never {} #[derive(Immutable)] enum Immutable2 { Uninhabited(Never, core::cell::UnsafeCell), Inhabited(u8), } // // TryFromBytes errors // #[derive(TryFromBytes)] enum TryFromBytes1 { A, } #[derive(TryFromBytes)] enum TryFromBytes2 { A, B(u8), } struct NotTryFromBytes; #[derive(TryFromBytes)] #[repr(u8)] enum TryFromBytes3 { A(NotTryFromBytes), } // // FromZeros errors // #[derive(FromZeros)] enum FromZeros1 { A(u8), } #[derive(FromZeros)] enum FromZeros2 { A, B(u8), } #[derive(FromZeros)] enum FromZeros3 { A = 1, B, } #[derive(FromZeros)] #[repr(u8)] enum FromZeros4 { A = 1, B = 2, } const NEGATIVE_ONE: i8 = -1; #[derive(FromZeros)] #[repr(i8)] enum FromZeros5 { A = NEGATIVE_ONE, B, } struct NotFromZeros; #[derive(FromZeros)] #[repr(u8)] enum FromZeros6 { A(NotFromZeros), } #[derive(FromZeros)] #[repr(u8)] enum FromZeros7 { A = 1, B(NotFromZeros), } // // FromBytes errors // #[derive(FromBytes)] enum FromBytes1 { A, } #[derive(FromBytes)] #[repr(C)] enum FromBytes2 { A, } #[derive(FromBytes)] #[repr(usize)] enum FromBytes3 { A, } #[derive(FromBytes)] #[repr(isize)] enum FromBytes4 { A, } #[derive(FromBytes)] #[repr(u32)] enum FromBytes5 { A, } #[derive(FromBytes)] #[repr(i32)] enum FromBytes6 { A, } #[derive(FromBytes)] #[repr(u64)] enum FromBytes7 { A, } #[derive(FromBytes)] #[repr(i64)] enum FromBytes8 { A, } #[derive(FromBytes)] #[repr(u8)] enum FooU8 { Variant0, Variant1, Variant2, Variant3, Variant4, Variant5, Variant6, Variant7, Variant8, Variant9, Variant10, Variant11, Variant12, Variant13, Variant14, Variant15, Variant16, Variant17, Variant18, Variant19, Variant20, Variant21, Variant22, Variant23, Variant24, Variant25, Variant26, Variant27, Variant28, Variant29, Variant30, Variant31, Variant32, Variant33, Variant34, Variant35, Variant36, Variant37, Variant38, Variant39, Variant40, Variant41, Variant42, Variant43, Variant44, Variant45, Variant46, Variant47, Variant48, Variant49, Variant50, Variant51, Variant52, Variant53, Variant54, Variant55, Variant56, Variant57, Variant58, Variant59, Variant60, Variant61, Variant62, Variant63, Variant64, Variant65, Variant66, Variant67, Variant68, Variant69, Variant70, Variant71, Variant72, Variant73, Variant74, Variant75, Variant76, Variant77, Variant78, Variant79, Variant80, Variant81, Variant82, Variant83, Variant84, Variant85, Variant86, Variant87, Variant88, Variant89, Variant90, Variant91, Variant92, Variant93, Variant94, Variant95, Variant96, Variant97, Variant98, Variant99, Variant100, Variant101, Variant102, Variant103, Variant104, Variant105, Variant106, Variant107, Variant108, Variant109, Variant110, Variant111, Variant112, Variant113, Variant114, Variant115, Variant116, Variant117, Variant118, Variant119, Variant120, Variant121, Variant122, Variant123, Variant124, Variant125, Variant126, Variant127, Variant128, Variant129, Variant130, Variant131, Variant132, Variant133, Variant134, Variant135, Variant136, Variant137, Variant138, Variant139, Variant140, Variant141, Variant142, Variant143, Variant144, Variant145, Variant146, Variant147, Variant148, Variant149, Variant150, Variant151, Variant152, Variant153, Variant154, Variant155, Variant156, Variant157, Variant158, Variant159, Variant160, Variant161, Variant162, Variant163, Variant164, Variant165, Variant166, Variant167, Variant168, Variant169, Variant170, Variant171, Variant172, Variant173, Variant174, Variant175, Variant176, Variant177, Variant178, Variant179, Variant180, Variant181, Variant182, Variant183, Variant184, Variant185, Variant186, Variant187, Variant188, Variant189, Variant190, Variant191, Variant192, Variant193, Variant194, Variant195, Variant196, Variant197, Variant198, Variant199, Variant200, Variant201, Variant202, Variant203, Variant204, Variant205, Variant206, Variant207, Variant208, Variant209, Variant210, Variant211, Variant212, Variant213, Variant214, Variant215, Variant216, Variant217, Variant218, Variant219, Variant220, Variant221, Variant222, Variant223, Variant224, Variant225, Variant226, Variant227, Variant228, Variant229, Variant230, Variant231, Variant232, Variant233, Variant234, Variant235, Variant236, Variant237, Variant238, Variant239, Variant240, Variant241, Variant242, Variant243, Variant244, Variant245, Variant246, Variant247, Variant248, Variant249, Variant250, Variant251, Variant252, Variant253, Variant254, Variant255(bool), } // // Unaligned errors // #[derive(Unaligned)] #[repr(C)] enum Unaligned1 { A, } #[derive(Unaligned)] #[repr(u16)] enum Unaligned2 { A, } #[derive(Unaligned)] #[repr(i16)] enum Unaligned3 { A, } #[derive(Unaligned)] #[repr(u32)] enum Unaligned4 { A, } #[derive(Unaligned)] #[repr(i32)] enum Unaligned5 { A, } #[derive(Unaligned)] #[repr(u64)] enum Unaligned6 { A, } #[derive(Unaligned)] #[repr(i64)] enum Unaligned7 { A, } #[derive(Unaligned)] #[repr(usize)] enum Unaligned8 { A, } #[derive(Unaligned)] #[repr(isize)] enum Unaligned9 { A, } #[derive(Unaligned)] #[repr(u8, align(2))] enum Unaligned10 { A, } #[derive(Unaligned)] #[repr(i8, align(2))] enum Unaligned11 { A, } #[derive(Unaligned)] #[repr(align(1), align(2))] enum Unaligned12 { A, } #[derive(Unaligned)] #[repr(align(2), align(4))] enum Unaligned13 { A, } // // IntoBytes errors // #[derive(IntoBytes)] #[repr(u8)] enum IntoBytes1 { A, B(u8), } #[derive(IntoBytes)] #[repr(C, align(4))] struct Align4IntoBytes(u32); #[derive(IntoBytes)] #[repr(u8)] enum IntoBytes2 { A(Align4IntoBytes), } #[derive(IntoBytes)] #[repr(u32)] enum IntoBytes3 { A(u32), B(u16), } #[derive(IntoBytes)] enum IntoBytes4 { A(u32), B(u16), } #[derive(IntoBytes)] enum IntoBytes5 { A(u32), } #[derive(IntoBytes)] #[repr(u8)] enum IntoBytes6 { A(T), }