| // 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. |
| // This is intended to ensure that the GIDL-generated test code produces the |
| // correct syntax for C++ bindings, which needs to distinguish between e.g. |
| // using "Foo foo;" vs "std::unique_ptr<Foo> foo;" for optional (nullable) |
| // fields, "object.foo()" vs "object->foo()" vs "object.set_foo()", etc. |
| |
| library test.conformance; |
| |
| type TableWithEmptyStruct = table { |
| 1: s EmptyStruct; |
| }; |
| |
| type XUnionWithEmptyStruct = flexible union { |
| 1: s EmptyStruct; |
| }; |
| |
| type UnionWithEmptyStruct = strict union { |
| 1: s EmptyStruct; |
| 2: force_alignment_of_8 uint64; |
| }; |
| |
| type StructWithOptionals = struct { |
| s EmptyStruct; |
| s2 box<EmptyStruct>; |
| t TableWithEmptyStruct; |
| // nullable tables are not allowed. |
| xu XUnionWithEmptyStruct; |
| xu2 XUnionWithEmptyStruct:optional; |
| u UnionWithEmptyStruct; |
| u2 UnionWithEmptyStruct:optional; |
| }; |
| |
| type Uint8Struct = struct { |
| val uint8; |
| }; |
| |
| type Uint16Struct = struct { |
| val uint16; |
| }; |
| |
| type Uint32Struct = struct { |
| val uint32; |
| }; |
| |
| type Uint64Struct = struct { |
| val uint64; |
| }; |
| |
| type OutOfLinePaddingZeroed7 = struct { |
| a box<Uint8Struct>; |
| b box<Uint64Struct>; |
| }; |
| |
| type OutOfLinePaddingZeroed6 = struct { |
| a box<Uint16Struct>; |
| b box<Uint64Struct>; |
| }; |
| |
| type OutOfLinePaddingZeroed4 = struct { |
| a box<Uint32Struct>; |
| b box<Uint64Struct>; |
| }; |