diff options
Diffstat (limited to 'tests/ui-stable/struct.rs')
-rw-r--r-- | tests/ui-stable/struct.rs | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/tests/ui-stable/struct.rs b/tests/ui-stable/struct.rs index 29aa0e8..c76dc7f 100644 --- a/tests/ui-stable/struct.rs +++ b/tests/ui-stable/struct.rs @@ -1,6 +1,10 @@ -// Copyright 2019 The Fuchsia Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. +// Copyright 2019 The Fuchsia Authors +// +// Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0 +// <LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0>, or the MIT +// license <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your option. +// This file may not be copied, modified, or distributed except according to +// those terms. #[macro_use] extern crate zerocopy; @@ -8,11 +12,43 @@ extern crate zerocopy; #[path = "../util.rs"] mod util; +use zerocopy::KnownLayout; + use self::util::AU16; fn main() {} // +// KnownLayout errors +// + +struct NotKnownLayout; + +struct NotKnownLayoutDst([u8]); + +// | `repr(C)`? | generic? | `KnownLayout`? | `Sized`? | Type Name | +// | N | N | N | N | KL00 | +#[derive(KnownLayout)] +struct KL00(u8, NotKnownLayoutDst); + +// | `repr(C)`? | generic? | `KnownLayout`? | `Sized`? | Type Name | +// | N | N | Y | N | KL02 | +#[derive(KnownLayout)] +struct KL02(u8, [u8]); + +// | `repr(C)`? | generic? | `KnownLayout`? | `Sized`? | Type Name | +// | Y | N | N | N | KL08 | +#[derive(KnownLayout)] +#[repr(C)] +struct KL08(u8, NotKnownLayoutDst); + +// | `repr(C)`? | generic? | `KnownLayout`? | `Sized`? | Type Name | +// | Y | N | N | Y | KL09 | +#[derive(KnownLayout)] +#[repr(C)] +struct KL09(NotKnownLayout, NotKnownLayout); + +// // AsBytes errors // @@ -27,6 +63,15 @@ struct AsBytes2 { bar: AU16, } +#[derive(AsBytes)] +#[repr(C, packed(2))] +struct AsBytes3 { + foo: u8, + // We'd prefer to use AU64 here, but you can't use aligned types in + // packed structs. + bar: u64, +} + // // Unaligned errors // |