[fidl][go] Get all GIDL sandwich tests to pass
It mostly boiled down to handling nullable xunions properly. Simplified
and removed duplicated code in the process.
Re-gen of the GIDL conformance tests.
Test: GIDL conformance tests
Change-Id: If001db4dc0880a29ceb4a0520c43e81f77adecc5
diff --git a/src/syscall/zx/fidl/conformance/impl.go b/src/syscall/zx/fidl/conformance/impl.go
index cfd9ae0..df5665f 100644
--- a/src/syscall/zx/fidl/conformance/impl.go
+++ b/src/syscall/zx/fidl/conformance/impl.go
@@ -2,12 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
-// GENERATED FILE: Do not edit!
-//
-// To rebuild this file, invoke third_party/go/regen-fidl.
+// Code generated by tools/fidl/gidl-conformance-suite/regen.sh; DO NOT EDIT.
// +build fuchsia
+//
+// Code generated by fidlgen; DO NOT EDIT.
+
package conformance
import (
@@ -15,6 +16,340 @@
_bindings "syscall/zx/fidl"
)
+type UnionWithBoundStringStruct struct {
+ _ struct{} `fidl:"s,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ V UnionWithBoundString `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mUnionWithBoundStringStruct = _bindings.CreateLazyMarshaler(UnionWithBoundStringStruct{})
+
+func (msg *UnionWithBoundStringStruct) Marshaler() _bindings.Marshaler {
+ return _mUnionWithBoundStringStruct
+}
+
+type SingleVariantUnionStruct struct {
+ _ struct{} `fidl:"s,8,4" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ U SingleVariantUnion `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mSingleVariantUnionStruct = _bindings.CreateLazyMarshaler(SingleVariantUnionStruct{})
+
+func (msg *SingleVariantUnionStruct) Marshaler() _bindings.Marshaler {
+ return _mSingleVariantUnionStruct
+}
+
+type SandwichUnionSize8Alignment4 struct {
+ _ struct{} `fidl:"s,16,4" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ Value UnionSize8Alignment4 `fidl:"4" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ After uint32 `fidl:"12" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
+}
+
+var _mSandwichUnionSize8Alignment4 = _bindings.CreateLazyMarshaler(SandwichUnionSize8Alignment4{})
+
+func (msg *SandwichUnionSize8Alignment4) Marshaler() _bindings.Marshaler {
+ return _mSandwichUnionSize8Alignment4
+}
+
+type SandwichUnionSize12Alignment4 struct {
+ _ struct{} `fidl:"s,20,4" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ Value UnionSize12Alignment4 `fidl:"4" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ After uint32 `fidl:"16" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
+}
+
+var _mSandwichUnionSize12Alignment4 = _bindings.CreateLazyMarshaler(SandwichUnionSize12Alignment4{})
+
+func (msg *SandwichUnionSize12Alignment4) Marshaler() _bindings.Marshaler {
+ return _mSandwichUnionSize12Alignment4
+}
+
+type StructSize16Alignment8 struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ F1 uint64 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ F2 uint64 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+}
+
+var _mStructSize16Alignment8 = _bindings.CreateLazyMarshaler(StructSize16Alignment8{})
+
+func (msg *StructSize16Alignment8) Marshaler() _bindings.Marshaler {
+ return _mStructSize16Alignment8
+}
+
+type SandwichUnionSize24Alignment8 struct {
+ _ struct{} `fidl:"s,40,8" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ Value UnionSize24Alignment8 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ After uint32 `fidl:"32" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
+}
+
+var _mSandwichUnionSize24Alignment8 = _bindings.CreateLazyMarshaler(SandwichUnionSize24Alignment8{})
+
+func (msg *SandwichUnionSize24Alignment8) Marshaler() _bindings.Marshaler {
+ return _mSandwichUnionSize24Alignment8
+}
+
+type SandwichUnionSize36Alignment4 struct {
+ _ struct{} `fidl:"s,44,4" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ Value UnionSize36Alignment4 `fidl:"4" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ After uint32 `fidl:"40" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
+}
+
+var _mSandwichUnionSize36Alignment4 = _bindings.CreateLazyMarshaler(SandwichUnionSize36Alignment4{})
+
+func (msg *SandwichUnionSize36Alignment4) Marshaler() _bindings.Marshaler {
+ return _mSandwichUnionSize36Alignment4
+}
+
+type Length2StringWrapper struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ Length2String string `fidl:"0,2" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mLength2StringWrapper = _bindings.CreateLazyMarshaler(Length2StringWrapper{})
+
+func (msg *Length2StringWrapper) Marshaler() _bindings.Marshaler {
+ return _mLength2StringWrapper
+}
+
+type StringWrapper struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ Str string `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mStringWrapper = _bindings.CreateLazyMarshaler(StringWrapper{})
+
+func (msg *StringWrapper) Marshaler() _bindings.Marshaler {
+ return _mStringWrapper
+}
+
+type TestXUnionInTable struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ Value XUnionInTable `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mTestXUnionInTable = _bindings.CreateLazyMarshaler(TestXUnionInTable{})
+
+func (msg *TestXUnionInTable) Marshaler() _bindings.Marshaler {
+ return _mTestXUnionInTable
+}
+
+type InterfaceConfig struct {
+ _ struct{} `fidl:"s,48,8" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Name string `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ IpAddressConfig IpAddressConfig `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
+}
+
+var _mInterfaceConfig = _bindings.CreateLazyMarshaler(InterfaceConfig{})
+
+func (msg *InterfaceConfig) Marshaler() _bindings.Marshaler {
+ return _mInterfaceConfig
+}
+
+type TestAddEthernetDeviceRequest struct {
+ _ struct{} `fidl:"s,72,8" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"64" fidl_alignment_v1_no_ee:"8"`
+ TopologicalPath string `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ Config InterfaceConfig `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
+ ThisShouldBeAHandle uint32 `fidl:"64" fidl_offset_v1:"56" fidl_offset_v1_no_ee:"56"`
+}
+
+var _mTestAddEthernetDeviceRequest = _bindings.CreateLazyMarshaler(TestAddEthernetDeviceRequest{})
+
+func (msg *TestAddEthernetDeviceRequest) Marshaler() _bindings.Marshaler {
+ return _mTestAddEthernetDeviceRequest
+}
+
+type NodeAttributes struct {
+ _ struct{} `fidl:"s,56,8" fidl_size_v1:"56" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"56" fidl_alignment_v1_no_ee:"8"`
+ Mode uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ Id uint64 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ ContentSize uint64 `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
+ StorageSize uint64 `fidl:"24" fidl_offset_v1:"24" fidl_offset_v1_no_ee:"24"`
+ LinkCount uint64 `fidl:"32" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
+ CreationTime uint64 `fidl:"40" fidl_offset_v1:"40" fidl_offset_v1_no_ee:"40"`
+ ModificationTime uint64 `fidl:"48" fidl_offset_v1:"48" fidl_offset_v1_no_ee:"48"`
+}
+
+var _mNodeAttributes = _bindings.CreateLazyMarshaler(NodeAttributes{})
+
+func (msg *NodeAttributes) Marshaler() _bindings.Marshaler {
+ return _mNodeAttributes
+}
+
+type FileGetAttrResponse struct {
+ _ struct{} `fidl:"s,64,8" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"64" fidl_alignment_v1_no_ee:"8"`
+ S int32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ Attributes NodeAttributes `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+}
+
+var _mFileGetAttrResponse = _bindings.CreateLazyMarshaler(FileGetAttrResponse{})
+
+func (msg *FileGetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mFileGetAttrResponse
+}
+
+type StructOfSimpleTable struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ Table SimpleTable `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mStructOfSimpleTable = _bindings.CreateLazyMarshaler(StructOfSimpleTable{})
+
+func (msg *StructOfSimpleTable) Marshaler() _bindings.Marshaler {
+ return _mStructOfSimpleTable
+}
+
+type SimpleTableThenUint64 struct {
+ _ struct{} `fidl:"s,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Table SimpleTable `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ Number uint64 `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
+}
+
+var _mSimpleTableThenUint64 = _bindings.CreateLazyMarshaler(SimpleTableThenUint64{})
+
+func (msg *SimpleTableThenUint64) Marshaler() _bindings.Marshaler {
+ return _mSimpleTableThenUint64
+}
+
+type StructOfTableWithStringAndVector struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ Table TableWithStringAndVector `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mStructOfTableWithStringAndVector = _bindings.CreateLazyMarshaler(StructOfTableWithStringAndVector{})
+
+func (msg *StructOfTableWithStringAndVector) Marshaler() _bindings.Marshaler {
+ return _mStructOfTableWithStringAndVector
+}
+
+type Int64Struct struct {
+ _ struct{} `fidl:"s,8,8" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"8" fidl_alignment_v1_no_ee:"8"`
+ X int64 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mInt64Struct = _bindings.CreateLazyMarshaler(Int64Struct{})
+
+func (msg *Int64Struct) Marshaler() _bindings.Marshaler {
+ return _mInt64Struct
+}
+
+type TestInlineXUnionInStruct struct {
+ _ struct{} `fidl:"s,56,8" fidl_size_v1:"56" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"56" fidl_alignment_v1_no_ee:"8"`
+ Before string `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ Xu SampleXUnion `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
+ After string `fidl:"40," fidl_offset_v1:"40" fidl_offset_v1_no_ee:"40"`
+}
+
+var _mTestInlineXUnionInStruct = _bindings.CreateLazyMarshaler(TestInlineXUnionInStruct{})
+
+func (msg *TestInlineXUnionInStruct) Marshaler() _bindings.Marshaler {
+ return _mTestInlineXUnionInStruct
+}
+
+type TestOptionalXUnionInStruct struct {
+ _ struct{} `fidl:"s,56,8" fidl_size_v1:"56" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"56" fidl_alignment_v1_no_ee:"8"`
+ Before string `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ Xu *SampleXUnion `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
+ After string `fidl:"40," fidl_offset_v1:"40" fidl_offset_v1_no_ee:"40"`
+}
+
+var _mTestOptionalXUnionInStruct = _bindings.CreateLazyMarshaler(TestOptionalXUnionInStruct{})
+
+func (msg *TestOptionalXUnionInStruct) Marshaler() _bindings.Marshaler {
+ return _mTestOptionalXUnionInStruct
+}
+
+type TestStrictXUnionInStruct struct {
+ _ struct{} `fidl:"s,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Xu SampleStrictXUnion `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mTestStrictXUnionInStruct = _bindings.CreateLazyMarshaler(TestStrictXUnionInStruct{})
+
+func (msg *TestStrictXUnionInStruct) Marshaler() _bindings.Marshaler {
+ return _mTestStrictXUnionInStruct
+}
+
+type TestFlexibleXUnionInStruct struct {
+ _ struct{} `fidl:"s,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Xu SampleXUnion `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mTestFlexibleXUnionInStruct = _bindings.CreateLazyMarshaler(TestFlexibleXUnionInStruct{})
+
+func (msg *TestFlexibleXUnionInStruct) Marshaler() _bindings.Marshaler {
+ return _mTestFlexibleXUnionInStruct
+}
+
+type StructWithOptionals struct {
+ _ struct{} `fidl:"s,104,8" fidl_size_v1:"128" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"128" fidl_alignment_v1_no_ee:"8"`
+ S EmptyStruct `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ S2 *EmptyStruct `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ T TableWithEmptyStruct `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
+ Xu XUnionWithEmptyStruct `fidl:"32" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
+ Xu2 *XUnionWithEmptyStruct `fidl:"56" fidl_offset_v1:"56" fidl_offset_v1_no_ee:"56"`
+ U UnionWithEmptyStruct `fidl:"80" fidl_offset_v1:"80" fidl_offset_v1_no_ee:"80"`
+ U2 *UnionWithEmptyStruct `fidl:"96" fidl_offset_v1:"104" fidl_offset_v1_no_ee:"104"`
+}
+
+var _mStructWithOptionals = _bindings.CreateLazyMarshaler(StructWithOptionals{})
+
+func (msg *StructWithOptionals) Marshaler() _bindings.Marshaler {
+ return _mStructWithOptionals
+}
+
+type EmptyStruct struct {
+ _ struct{} `fidl:"s,1,1" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v1_no_ee:"1" fidl_alignment_v1_no_ee:"1"`
+}
+
+var _mEmptyStruct = _bindings.CreateLazyMarshaler(EmptyStruct{})
+
+func (msg *EmptyStruct) Marshaler() _bindings.Marshaler {
+ return _mEmptyStruct
+}
+
+type EmptyStructSandwich struct {
+ _ struct{} `fidl:"s,40,8" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Before string `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ Es EmptyStruct `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
+ After string `fidl:"24," fidl_offset_v1:"24" fidl_offset_v1_no_ee:"24"`
+}
+
+var _mEmptyStructSandwich = _bindings.CreateLazyMarshaler(EmptyStructSandwich{})
+
+func (msg *EmptyStructSandwich) Marshaler() _bindings.Marshaler {
+ return _mEmptyStructSandwich
+}
+
+type Uint8Uint16Uint32Uint64 struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ F1 uint8 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ F2 uint16 `fidl:"2" fidl_offset_v1:"2" fidl_offset_v1_no_ee:"2"`
+ F3 uint32 `fidl:"4" fidl_offset_v1:"4" fidl_offset_v1_no_ee:"4"`
+ F4 uint64 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+}
+
+var _mUint8Uint16Uint32Uint64 = _bindings.CreateLazyMarshaler(Uint8Uint16Uint32Uint64{})
+
+func (msg *Uint8Uint16Uint32Uint64) Marshaler() _bindings.Marshaler {
+ return _mUint8Uint16Uint32Uint64
+}
+
+type Uint64Uint32Uint16Uint8 struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ F1 uint64 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ F2 uint32 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ F3 uint16 `fidl:"12" fidl_offset_v1:"12" fidl_offset_v1_no_ee:"12"`
+ F4 uint8 `fidl:"14" fidl_offset_v1:"14" fidl_offset_v1_no_ee:"14"`
+}
+
+var _mUint64Uint32Uint16Uint8 = _bindings.CreateLazyMarshaler(Uint64Uint32Uint16Uint8{})
+
+func (msg *Uint64Uint32Uint16Uint8) Marshaler() _bindings.Marshaler {
+ return _mUint64Uint32Uint16Uint8
+}
+
type ThreeByte struct {
_ struct{} `fidl:"s,3,1" fidl_size_v1:"3" fidl_alignment_v1:"1" fidl_size_v1_no_ee:"3" fidl_alignment_v1_no_ee:"1"`
Elem1 uint8 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
@@ -154,88 +489,6 @@
return _mStructWithVectors
}
-type TestXUnionInTable struct {
- _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
- Value XUnionInTable `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
-}
-
-var _mTestXUnionInTable = _bindings.CreateLazyMarshaler(TestXUnionInTable{})
-
-func (msg *TestXUnionInTable) Marshaler() _bindings.Marshaler {
- return _mTestXUnionInTable
-}
-
-type InterfaceConfig struct {
- _ struct{} `fidl:"s,48,8" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
- Name string `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- IpAddressConfig IpAddressConfig `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
-}
-
-var _mInterfaceConfig = _bindings.CreateLazyMarshaler(InterfaceConfig{})
-
-func (msg *InterfaceConfig) Marshaler() _bindings.Marshaler {
- return _mInterfaceConfig
-}
-
-type TestAddEthernetDeviceRequest struct {
- _ struct{} `fidl:"s,72,8" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"64" fidl_alignment_v1_no_ee:"8"`
- TopologicalPath string `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- Config InterfaceConfig `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
- ThisShouldBeAHandle uint32 `fidl:"64" fidl_offset_v1:"56" fidl_offset_v1_no_ee:"56"`
-}
-
-var _mTestAddEthernetDeviceRequest = _bindings.CreateLazyMarshaler(TestAddEthernetDeviceRequest{})
-
-func (msg *TestAddEthernetDeviceRequest) Marshaler() _bindings.Marshaler {
- return _mTestAddEthernetDeviceRequest
-}
-
-type NodeAttributes struct {
- _ struct{} `fidl:"s,56,8" fidl_size_v1:"56" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"56" fidl_alignment_v1_no_ee:"8"`
- Mode uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- Id uint64 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
- ContentSize uint64 `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
- StorageSize uint64 `fidl:"24" fidl_offset_v1:"24" fidl_offset_v1_no_ee:"24"`
- LinkCount uint64 `fidl:"32" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
- CreationTime uint64 `fidl:"40" fidl_offset_v1:"40" fidl_offset_v1_no_ee:"40"`
- ModificationTime uint64 `fidl:"48" fidl_offset_v1:"48" fidl_offset_v1_no_ee:"48"`
-}
-
-var _mNodeAttributes = _bindings.CreateLazyMarshaler(NodeAttributes{})
-
-func (msg *NodeAttributes) Marshaler() _bindings.Marshaler {
- return _mNodeAttributes
-}
-
-type FileGetAttrResponse struct {
- _ struct{} `fidl:"s,64,8" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"64" fidl_alignment_v1_no_ee:"8"`
- S int32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- Attributes NodeAttributes `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
-}
-
-var _mFileGetAttrResponse = _bindings.CreateLazyMarshaler(FileGetAttrResponse{})
-
-func (msg *FileGetAttrResponse) Marshaler() _bindings.Marshaler {
- return _mFileGetAttrResponse
-}
-
-type StructWithOptionals struct {
- _ struct{} `fidl:"s,104,8" fidl_size_v1:"128" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"128" fidl_alignment_v1_no_ee:"8"`
- S EmptyStruct `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- S2 *EmptyStruct `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
- T TableWithEmptyStruct `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
- Xu XUnionWithEmptyStruct `fidl:"32" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
- Xu2 *XUnionWithEmptyStruct `fidl:"56" fidl_offset_v1:"56" fidl_offset_v1_no_ee:"56"`
- U UnionWithEmptyStruct `fidl:"80" fidl_offset_v1:"80" fidl_offset_v1_no_ee:"80"`
- U2 *UnionWithEmptyStruct `fidl:"96" fidl_offset_v1:"104" fidl_offset_v1_no_ee:"104"`
-}
-
-var _mStructWithOptionals = _bindings.CreateLazyMarshaler(StructWithOptionals{})
-
-func (msg *StructWithOptionals) Marshaler() _bindings.Marshaler {
- return _mStructWithOptionals
-}
-
type MyBool struct {
_ struct{} `fidl:"s,1,1" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v1_no_ee:"1" fidl_alignment_v1_no_ee:"1"`
Value bool `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
@@ -368,336 +621,327 @@
return _mMyFloat64
}
-type Length2StringWrapper struct {
- _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
- Length2String string `fidl:"0,2" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
-}
-
-var _mLength2StringWrapper = _bindings.CreateLazyMarshaler(Length2StringWrapper{})
-
-func (msg *Length2StringWrapper) Marshaler() _bindings.Marshaler {
- return _mLength2StringWrapper
-}
-
-type StringWrapper struct {
- _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
- Str string `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
-}
-
-var _mStringWrapper = _bindings.CreateLazyMarshaler(StringWrapper{})
-
-func (msg *StringWrapper) Marshaler() _bindings.Marshaler {
- return _mStringWrapper
-}
-
-type EmptyStruct struct {
- _ struct{} `fidl:"s,1,1" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v1_no_ee:"1" fidl_alignment_v1_no_ee:"1"`
-}
-
-var _mEmptyStruct = _bindings.CreateLazyMarshaler(EmptyStruct{})
-
-func (msg *EmptyStruct) Marshaler() _bindings.Marshaler {
- return _mEmptyStruct
-}
-
-type EmptyStructSandwich struct {
- _ struct{} `fidl:"s,40,8" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
- Before string `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- Es EmptyStruct `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
- After string `fidl:"24," fidl_offset_v1:"24" fidl_offset_v1_no_ee:"24"`
-}
-
-var _mEmptyStructSandwich = _bindings.CreateLazyMarshaler(EmptyStructSandwich{})
-
-func (msg *EmptyStructSandwich) Marshaler() _bindings.Marshaler {
- return _mEmptyStructSandwich
-}
-
-type Uint8Uint16Uint32Uint64 struct {
- _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
- F1 uint8 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- F2 uint16 `fidl:"2" fidl_offset_v1:"2" fidl_offset_v1_no_ee:"2"`
- F3 uint32 `fidl:"4" fidl_offset_v1:"4" fidl_offset_v1_no_ee:"4"`
- F4 uint64 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
-}
-
-var _mUint8Uint16Uint32Uint64 = _bindings.CreateLazyMarshaler(Uint8Uint16Uint32Uint64{})
-
-func (msg *Uint8Uint16Uint32Uint64) Marshaler() _bindings.Marshaler {
- return _mUint8Uint16Uint32Uint64
-}
-
-type Uint64Uint32Uint16Uint8 struct {
- _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
- F1 uint64 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- F2 uint32 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
- F3 uint16 `fidl:"12" fidl_offset_v1:"12" fidl_offset_v1_no_ee:"12"`
- F4 uint8 `fidl:"14" fidl_offset_v1:"14" fidl_offset_v1_no_ee:"14"`
-}
-
-var _mUint64Uint32Uint16Uint8 = _bindings.CreateLazyMarshaler(Uint64Uint32Uint16Uint8{})
-
-func (msg *Uint64Uint32Uint16Uint8) Marshaler() _bindings.Marshaler {
- return _mUint64Uint32Uint16Uint8
-}
-
-type StructOfSimpleTable struct {
- _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
- Table SimpleTable `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
-}
-
-var _mStructOfSimpleTable = _bindings.CreateLazyMarshaler(StructOfSimpleTable{})
-
-func (msg *StructOfSimpleTable) Marshaler() _bindings.Marshaler {
- return _mStructOfSimpleTable
-}
-
-type SimpleTableThenUint64 struct {
- _ struct{} `fidl:"s,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
- Table SimpleTable `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- Number uint64 `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
-}
-
-var _mSimpleTableThenUint64 = _bindings.CreateLazyMarshaler(SimpleTableThenUint64{})
-
-func (msg *SimpleTableThenUint64) Marshaler() _bindings.Marshaler {
- return _mSimpleTableThenUint64
-}
-
-type StructOfTableWithStringAndVector struct {
- _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
- Table TableWithStringAndVector `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
-}
-
-var _mStructOfTableWithStringAndVector = _bindings.CreateLazyMarshaler(StructOfTableWithStringAndVector{})
-
-func (msg *StructOfTableWithStringAndVector) Marshaler() _bindings.Marshaler {
- return _mStructOfTableWithStringAndVector
-}
-
-type UnionWithBoundStringStruct struct {
- _ struct{} `fidl:"s,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
- V UnionWithBoundString `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
-}
-
-var _mUnionWithBoundStringStruct = _bindings.CreateLazyMarshaler(UnionWithBoundStringStruct{})
-
-func (msg *UnionWithBoundStringStruct) Marshaler() _bindings.Marshaler {
- return _mUnionWithBoundStringStruct
-}
-
-type SingleVariantUnionStruct struct {
- _ struct{} `fidl:"s,8,4" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
- U SingleVariantUnion `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
-}
-
-var _mSingleVariantUnionStruct = _bindings.CreateLazyMarshaler(SingleVariantUnionStruct{})
-
-func (msg *SingleVariantUnionStruct) Marshaler() _bindings.Marshaler {
- return _mSingleVariantUnionStruct
-}
-
-type SandwichUnionSize8Alignment4 struct {
- _ struct{} `fidl:"s,16,4" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
- Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- Value UnionSize8Alignment4 `fidl:"4" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
- After uint32 `fidl:"12" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
-}
-
-var _mSandwichUnionSize8Alignment4 = _bindings.CreateLazyMarshaler(SandwichUnionSize8Alignment4{})
-
-func (msg *SandwichUnionSize8Alignment4) Marshaler() _bindings.Marshaler {
- return _mSandwichUnionSize8Alignment4
-}
-
-type SandwichUnionSize12Alignment4 struct {
- _ struct{} `fidl:"s,20,4" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
- Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- Value UnionSize12Alignment4 `fidl:"4" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
- After uint32 `fidl:"16" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
-}
-
-var _mSandwichUnionSize12Alignment4 = _bindings.CreateLazyMarshaler(SandwichUnionSize12Alignment4{})
-
-func (msg *SandwichUnionSize12Alignment4) Marshaler() _bindings.Marshaler {
- return _mSandwichUnionSize12Alignment4
-}
-
-type StructSize16Alignment8 struct {
+type StructSize16Align8 struct {
_ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
F1 uint64 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
F2 uint64 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
}
-var _mStructSize16Alignment8 = _bindings.CreateLazyMarshaler(StructSize16Alignment8{})
+var _mStructSize16Align8 = _bindings.CreateLazyMarshaler(StructSize16Align8{})
-func (msg *StructSize16Alignment8) Marshaler() _bindings.Marshaler {
- return _mStructSize16Alignment8
+func (msg *StructSize16Align8) Marshaler() _bindings.Marshaler {
+ return _mStructSize16Align8
}
-type SandwichUnionSize24Alignment8 struct {
- _ struct{} `fidl:"s,40,8" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
- Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- Value UnionSize24Alignment8 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
- After uint32 `fidl:"32" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
+type Sandwich1 struct {
+ _ struct{} `fidl:"s,16,4" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ TheUnion UnionSize8Align4 `fidl:"4" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ After uint32 `fidl:"12" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
}
-var _mSandwichUnionSize24Alignment8 = _bindings.CreateLazyMarshaler(SandwichUnionSize24Alignment8{})
+var _mSandwich1 = _bindings.CreateLazyMarshaler(Sandwich1{})
-func (msg *SandwichUnionSize24Alignment8) Marshaler() _bindings.Marshaler {
- return _mSandwichUnionSize24Alignment8
+func (msg *Sandwich1) Marshaler() _bindings.Marshaler {
+ return _mSandwich1
}
-type SandwichUnionSize36Alignment4 struct {
- _ struct{} `fidl:"s,44,4" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
- Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- Value UnionSize36Alignment4 `fidl:"4" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
- After uint32 `fidl:"40" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
+type Sandwich2 struct {
+ _ struct{} `fidl:"s,20,4" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ TheUnion UnionSize12Align4 `fidl:"4" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ After uint32 `fidl:"16" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
}
-var _mSandwichUnionSize36Alignment4 = _bindings.CreateLazyMarshaler(SandwichUnionSize36Alignment4{})
+var _mSandwich2 = _bindings.CreateLazyMarshaler(Sandwich2{})
-func (msg *SandwichUnionSize36Alignment4) Marshaler() _bindings.Marshaler {
- return _mSandwichUnionSize36Alignment4
+func (msg *Sandwich2) Marshaler() _bindings.Marshaler {
+ return _mSandwich2
}
-type Int64Struct struct {
- _ struct{} `fidl:"s,8,8" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"8" fidl_alignment_v1_no_ee:"8"`
- X int64 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+type Sandwich3 struct {
+ _ struct{} `fidl:"s,40,8" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ TheUnion UnionSize24Align8 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ After uint32 `fidl:"32" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
}
-var _mInt64Struct = _bindings.CreateLazyMarshaler(Int64Struct{})
+var _mSandwich3 = _bindings.CreateLazyMarshaler(Sandwich3{})
-func (msg *Int64Struct) Marshaler() _bindings.Marshaler {
- return _mInt64Struct
+func (msg *Sandwich3) Marshaler() _bindings.Marshaler {
+ return _mSandwich3
}
-type TestInlineXUnionInStruct struct {
- _ struct{} `fidl:"s,56,8" fidl_size_v1:"56" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"56" fidl_alignment_v1_no_ee:"8"`
- Before string `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- Xu SampleXUnion `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
- After string `fidl:"40," fidl_offset_v1:"40" fidl_offset_v1_no_ee:"40"`
+type Sandwich4 struct {
+ _ struct{} `fidl:"s,44,4" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ TheUnion UnionSize36Align4 `fidl:"4" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ After uint32 `fidl:"40" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
}
-var _mTestInlineXUnionInStruct = _bindings.CreateLazyMarshaler(TestInlineXUnionInStruct{})
+var _mSandwich4 = _bindings.CreateLazyMarshaler(Sandwich4{})
-func (msg *TestInlineXUnionInStruct) Marshaler() _bindings.Marshaler {
- return _mTestInlineXUnionInStruct
+func (msg *Sandwich4) Marshaler() _bindings.Marshaler {
+ return _mSandwich4
}
-type TestOptionalXUnionInStruct struct {
- _ struct{} `fidl:"s,56,8" fidl_size_v1:"56" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"56" fidl_alignment_v1_no_ee:"8"`
- Before string `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
- Xu *SampleXUnion `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
- After string `fidl:"40," fidl_offset_v1:"40" fidl_offset_v1_no_ee:"40"`
+type Sandwich5 struct {
+ _ struct{} `fidl:"s,48,8" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ UnionOfUnion UnionOfUnion `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ After uint32 `fidl:"40" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
}
-var _mTestOptionalXUnionInStruct = _bindings.CreateLazyMarshaler(TestOptionalXUnionInStruct{})
+var _mSandwich5 = _bindings.CreateLazyMarshaler(Sandwich5{})
-func (msg *TestOptionalXUnionInStruct) Marshaler() _bindings.Marshaler {
- return _mTestOptionalXUnionInStruct
+func (msg *Sandwich5) Marshaler() _bindings.Marshaler {
+ return _mSandwich5
}
-type TestStrictXUnionInStruct struct {
- _ struct{} `fidl:"s,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
- Xu SampleStrictXUnion `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+type StructSize3Align1 struct {
+ _ struct{} `fidl:"s,3,1" fidl_size_v1:"3" fidl_alignment_v1:"1" fidl_size_v1_no_ee:"3" fidl_alignment_v1_no_ee:"1"`
+ ThreeBytes [3]uint8 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
}
-var _mTestStrictXUnionInStruct = _bindings.CreateLazyMarshaler(TestStrictXUnionInStruct{})
+var _mStructSize3Align1 = _bindings.CreateLazyMarshaler(StructSize3Align1{})
-func (msg *TestStrictXUnionInStruct) Marshaler() _bindings.Marshaler {
- return _mTestStrictXUnionInStruct
+func (msg *StructSize3Align1) Marshaler() _bindings.Marshaler {
+ return _mStructSize3Align1
}
-type TestFlexibleXUnionInStruct struct {
- _ struct{} `fidl:"s,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
- Xu SampleXUnion `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+type StructSize3Align2 struct {
+ _ struct{} `fidl:"s,4,2" fidl_size_v1:"4" fidl_alignment_v1:"2" fidl_size_v1_no_ee:"4" fidl_alignment_v1_no_ee:"2"`
+ F1 uint16 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ F2 uint8 `fidl:"2" fidl_offset_v1:"2" fidl_offset_v1_no_ee:"2"`
}
-var _mTestFlexibleXUnionInStruct = _bindings.CreateLazyMarshaler(TestFlexibleXUnionInStruct{})
+var _mStructSize3Align2 = _bindings.CreateLazyMarshaler(StructSize3Align2{})
-func (msg *TestFlexibleXUnionInStruct) Marshaler() _bindings.Marshaler {
- return _mTestFlexibleXUnionInStruct
+func (msg *StructSize3Align2) Marshaler() _bindings.Marshaler {
+ return _mStructSize3Align2
}
-type I_ipAddressConfigTag uint32
-
-const (
- _ I_ipAddressConfigTag = iota
- IpAddressConfigPaddingSize24Align4
- IpAddressConfigDhcp
-)
-
-type IpAddressConfig struct {
- I_ipAddressConfigTag `fidl:"u,28,4" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
- PaddingSize24Align4 [6]uint32 `fidl:"1"`
- Dhcp bool `fidl:"2"`
+type Sandwich6 struct {
+ _ struct{} `fidl:"s,40,8" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ TheUnion UnionWithVector `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ After uint32 `fidl:"32" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
}
-func (u *IpAddressConfig) Which() I_ipAddressConfigTag {
- return u.I_ipAddressConfigTag
+var _mSandwich6 = _bindings.CreateLazyMarshaler(Sandwich6{})
+
+func (msg *Sandwich6) Marshaler() _bindings.Marshaler {
+ return _mSandwich6
}
-func (u *IpAddressConfig) SetPaddingSize24Align4(paddingSize24Align4 [6]uint32) {
- u.I_ipAddressConfigTag = IpAddressConfigPaddingSize24Align4
- u.PaddingSize24Align4 = paddingSize24Align4
+type Sandwich7 struct {
+ _ struct{} `fidl:"s,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Before uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ OptSandwich1 *Sandwich1 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ After uint32 `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
}
-func IpAddressConfigWithPaddingSize24Align4(paddingSize24Align4 [6]uint32) IpAddressConfig {
- var _u IpAddressConfig
- _u.SetPaddingSize24Align4(paddingSize24Align4)
- return _u
+var _mSandwich7 = _bindings.CreateLazyMarshaler(Sandwich7{})
+
+func (msg *Sandwich7) Marshaler() _bindings.Marshaler {
+ return _mSandwich7
}
-func (u *IpAddressConfig) SetDhcp(dhcp bool) {
- u.I_ipAddressConfigTag = IpAddressConfigDhcp
- u.Dhcp = dhcp
+type Sandwich8 struct {
+ _ struct{} `fidl:"s,48,8" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Before uint64 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ UnionOfUnion UnionOfUnion `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ After uint32 `fidl:"40" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
}
-func IpAddressConfigWithDhcp(dhcp bool) IpAddressConfig {
- var _u IpAddressConfig
- _u.SetDhcp(dhcp)
- return _u
+var _mSandwich8 = _bindings.CreateLazyMarshaler(Sandwich8{})
+
+func (msg *Sandwich8) Marshaler() _bindings.Marshaler {
+ return _mSandwich8
}
-type I_unionWithEmptyStructTag uint32
-
-const (
- _ I_unionWithEmptyStructTag = iota
- UnionWithEmptyStructS
- UnionWithEmptyStructForceAlignmentOf8
-)
-
-type UnionWithEmptyStruct struct {
- I_unionWithEmptyStructTag `fidl:"u,16,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
- S EmptyStruct `fidl:"1"`
- ForceAlignmentOf8 uint64 `fidl:"2"`
+type Regression1 struct {
+ _ struct{} `fidl:"s,32,8" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"32" fidl_alignment_v1_no_ee:"8"`
+ F1 uint8 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ F2 uint32 `fidl:"4" fidl_offset_v1:"4" fidl_offset_v1_no_ee:"4"`
+ F3 uint8 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v1_no_ee:"8"`
+ F4 uint16 `fidl:"10" fidl_offset_v1:"10" fidl_offset_v1_no_ee:"10"`
+ F5 uint64 `fidl:"16" fidl_offset_v1:"16" fidl_offset_v1_no_ee:"16"`
+ F6 uint8 `fidl:"24" fidl_offset_v1:"24" fidl_offset_v1_no_ee:"24"`
}
-func (u *UnionWithEmptyStruct) Which() I_unionWithEmptyStructTag {
- return u.I_unionWithEmptyStructTag
+var _mRegression1 = _bindings.CreateLazyMarshaler(Regression1{})
+
+func (msg *Regression1) Marshaler() _bindings.Marshaler {
+ return _mRegression1
}
-func (u *UnionWithEmptyStruct) SetS(s EmptyStruct) {
- u.I_unionWithEmptyStructTag = UnionWithEmptyStructS
- u.S = s
+type Regression2 struct {
+ _ struct{} `fidl:"s,40,8" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"40" fidl_alignment_v1_no_ee:"8"`
+ Head Regression1 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ F7 uint8 `fidl:"32" fidl_offset_v1:"32" fidl_offset_v1_no_ee:"32"`
}
-func UnionWithEmptyStructWithS(s EmptyStruct) UnionWithEmptyStruct {
- var _u UnionWithEmptyStruct
- _u.SetS(s)
- return _u
+var _mRegression2 = _bindings.CreateLazyMarshaler(Regression2{})
+
+func (msg *Regression2) Marshaler() _bindings.Marshaler {
+ return _mRegression2
}
-func (u *UnionWithEmptyStruct) SetForceAlignmentOf8(forceAlignmentOf8 uint64) {
- u.I_unionWithEmptyStructTag = UnionWithEmptyStructForceAlignmentOf8
- u.ForceAlignmentOf8 = forceAlignmentOf8
+type Regression3 struct {
+ _ struct{} `fidl:"s,8,8" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"8" fidl_alignment_v1_no_ee:"8"`
+ OptValue *Regression2 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
}
-func UnionWithEmptyStructWithForceAlignmentOf8(forceAlignmentOf8 uint64) UnionWithEmptyStruct {
- var _u UnionWithEmptyStruct
- _u.SetForceAlignmentOf8(forceAlignmentOf8)
- return _u
+var _mRegression3 = _bindings.CreateLazyMarshaler(Regression3{})
+
+func (msg *Regression3) Marshaler() _bindings.Marshaler {
+ return _mRegression3
+}
+
+type TableStructWithReservedSandwichStruct struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ Table TableStructWithReservedSandwich `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mTableStructWithReservedSandwichStruct = _bindings.CreateLazyMarshaler(TableStructWithReservedSandwichStruct{})
+
+func (msg *TableStructWithReservedSandwichStruct) Marshaler() _bindings.Marshaler {
+ return _mTableStructWithReservedSandwichStruct
+}
+
+type TableStructWithUint32SandwichStruct struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ Table TableStructWithUint32Sandwich `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mTableStructWithUint32SandwichStruct = _bindings.CreateLazyMarshaler(TableStructWithUint32SandwichStruct{})
+
+func (msg *TableStructWithUint32SandwichStruct) Marshaler() _bindings.Marshaler {
+ return _mTableStructWithUint32SandwichStruct
+}
+
+type TableUnionWithVectorReservedSandwichStruct struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ Table TableUnionWithVectorReservedSandwich `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mTableUnionWithVectorReservedSandwichStruct = _bindings.CreateLazyMarshaler(TableUnionWithVectorReservedSandwichStruct{})
+
+func (msg *TableUnionWithVectorReservedSandwichStruct) Marshaler() _bindings.Marshaler {
+ return _mTableUnionWithVectorReservedSandwichStruct
+}
+
+type TableUnionWithVectorStructSandwichStruct struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ Table TableUnionWithVectorStructSandwich `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mTableUnionWithVectorStructSandwichStruct = _bindings.CreateLazyMarshaler(TableUnionWithVectorStructSandwichStruct{})
+
+func (msg *TableUnionWithVectorStructSandwichStruct) Marshaler() _bindings.Marshaler {
+ return _mTableUnionWithVectorStructSandwichStruct
+}
+
+type XUnionWithStructStruct struct {
+ _ struct{} `fidl:"s,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Xu XUnionWithStruct `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mXUnionWithStructStruct = _bindings.CreateLazyMarshaler(XUnionWithStructStruct{})
+
+func (msg *XUnionWithStructStruct) Marshaler() _bindings.Marshaler {
+ return _mXUnionWithStructStruct
+}
+
+type XUnionWithXUnionStruct struct {
+ _ struct{} `fidl:"s,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Xu XUnionWithXUnion `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mXUnionWithXUnionStruct = _bindings.CreateLazyMarshaler(XUnionWithXUnionStruct{})
+
+func (msg *XUnionWithXUnionStruct) Marshaler() _bindings.Marshaler {
+ return _mXUnionWithXUnionStruct
+}
+
+type StructSize5Align1 struct {
+ _ struct{} `fidl:"s,5,1" fidl_size_v1:"5" fidl_alignment_v1:"1" fidl_size_v1_no_ee:"5" fidl_alignment_v1_no_ee:"1"`
+ Data [5]uint8 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mStructSize5Align1 = _bindings.CreateLazyMarshaler(StructSize5Align1{})
+
+func (msg *StructSize5Align1) Marshaler() _bindings.Marshaler {
+ return _mStructSize5Align1
+}
+
+type StructSize5Align4 struct {
+ _ struct{} `fidl:"s,8,4" fidl_size_v1:"8" fidl_alignment_v1:"4" fidl_size_v1_no_ee:"8" fidl_alignment_v1_no_ee:"4"`
+ Four uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ One uint8 `fidl:"4" fidl_offset_v1:"4" fidl_offset_v1_no_ee:"4"`
+}
+
+var _mStructSize5Align4 = _bindings.CreateLazyMarshaler(StructSize5Align4{})
+
+func (msg *StructSize5Align4) Marshaler() _bindings.Marshaler {
+ return _mStructSize5Align4
+}
+
+type StructSize5Align1Vector struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ V []StructSize5Align1 `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mStructSize5Align1Vector = _bindings.CreateLazyMarshaler(StructSize5Align1Vector{})
+
+func (msg *StructSize5Align1Vector) Marshaler() _bindings.Marshaler {
+ return _mStructSize5Align1Vector
+}
+
+type StructSize5Align4Vector struct {
+ _ struct{} `fidl:"s,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ V []StructSize5Align4 `fidl:"0," fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mStructSize5Align4Vector = _bindings.CreateLazyMarshaler(StructSize5Align4Vector{})
+
+func (msg *StructSize5Align4Vector) Marshaler() _bindings.Marshaler {
+ return _mStructSize5Align4Vector
+}
+
+type StructSize5Align1Array struct {
+ _ struct{} `fidl:"s,15,1" fidl_size_v1:"15" fidl_alignment_v1:"1" fidl_size_v1_no_ee:"15" fidl_alignment_v1_no_ee:"1"`
+ A [3]StructSize5Align1 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mStructSize5Align1Array = _bindings.CreateLazyMarshaler(StructSize5Align1Array{})
+
+func (msg *StructSize5Align1Array) Marshaler() _bindings.Marshaler {
+ return _mStructSize5Align1Array
+}
+
+type StructSize5Align4Array struct {
+ _ struct{} `fidl:"s,24,4" fidl_size_v1:"24" fidl_alignment_v1:"4" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"4"`
+ A [3]StructSize5Align4 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+}
+
+var _mStructSize5Align4Array = _bindings.CreateLazyMarshaler(StructSize5Align4Array{})
+
+func (msg *StructSize5Align4Array) Marshaler() _bindings.Marshaler {
+ return _mStructSize5Align4Array
+}
+
+type ArrayStruct struct {
+ _ struct{} `fidl:"s,96,8" fidl_size_v1:"144" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"144" fidl_alignment_v1_no_ee:"8"`
+ Unions [3]StringUnion `fidl:"0" fidl_offset_v1:"0" fidl_offset_v1_no_ee:"0"`
+ OptionalUnions [3]*StringUnion `fidl:"72" fidl_offset_v1:"72" fidl_offset_v1_no_ee:"72"`
+}
+
+var _mArrayStruct = _bindings.CreateLazyMarshaler(ArrayStruct{})
+
+func (msg *ArrayStruct) Marshaler() _bindings.Marshaler {
+ return _mArrayStruct
}
type I_unionWithBoundStringTag uint32
@@ -1005,6 +1249,46 @@
return _u
}
+type I_ipAddressConfigTag uint32
+
+const (
+ _ I_ipAddressConfigTag = iota
+ IpAddressConfigPaddingSize24Align4
+ IpAddressConfigDhcp
+)
+
+type IpAddressConfig struct {
+ I_ipAddressConfigTag `fidl:"u,28,4" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ PaddingSize24Align4 [6]uint32 `fidl:"1"`
+ Dhcp bool `fidl:"2"`
+}
+
+func (u *IpAddressConfig) Which() I_ipAddressConfigTag {
+ return u.I_ipAddressConfigTag
+}
+
+func (u *IpAddressConfig) SetPaddingSize24Align4(paddingSize24Align4 [6]uint32) {
+ u.I_ipAddressConfigTag = IpAddressConfigPaddingSize24Align4
+ u.PaddingSize24Align4 = paddingSize24Align4
+}
+
+func IpAddressConfigWithPaddingSize24Align4(paddingSize24Align4 [6]uint32) IpAddressConfig {
+ var _u IpAddressConfig
+ _u.SetPaddingSize24Align4(paddingSize24Align4)
+ return _u
+}
+
+func (u *IpAddressConfig) SetDhcp(dhcp bool) {
+ u.I_ipAddressConfigTag = IpAddressConfigDhcp
+ u.Dhcp = dhcp
+}
+
+func IpAddressConfigWithDhcp(dhcp bool) IpAddressConfig {
+ var _u IpAddressConfig
+ _u.SetDhcp(dhcp)
+ return _u
+}
+
type I_simpleUnionTag uint32
const (
@@ -1071,39 +1355,543 @@
return _u
}
-type I_xUnionWithEmptyStructTag uint32
+type I_unionWithEmptyStructTag uint32
const (
- XUnionWithEmptyStruct_unknownData = 0 // 0x00000000
- XUnionWithEmptyStructS = 1956241662 // 0x7499e0fe
+ _ I_unionWithEmptyStructTag = iota
+ UnionWithEmptyStructS
+ UnionWithEmptyStructForceAlignmentOf8
)
-type XUnionWithEmptyStruct struct {
- I_xUnionWithEmptyStructTag `fidl:"x,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
- I_unknownData []byte
- S EmptyStruct `fidl:"1956241662"`
+type UnionWithEmptyStruct struct {
+ I_unionWithEmptyStructTag `fidl:"u,16,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ S EmptyStruct `fidl:"1"`
+ ForceAlignmentOf8 uint64 `fidl:"2"`
}
-func (_m *XUnionWithEmptyStruct) Which() I_xUnionWithEmptyStructTag {
- switch _m.I_xUnionWithEmptyStructTag {
- case 1956241662:
- return XUnionWithEmptyStructS
- default:
- return XUnionWithEmptyStruct_unknownData
- }
+func (u *UnionWithEmptyStruct) Which() I_unionWithEmptyStructTag {
+ return u.I_unionWithEmptyStructTag
}
-func (_m *XUnionWithEmptyStruct) Ordinal() uint32 {
- return uint32(_m.I_xUnionWithEmptyStructTag)
+func (u *UnionWithEmptyStruct) SetS(s EmptyStruct) {
+ u.I_unionWithEmptyStructTag = UnionWithEmptyStructS
+ u.S = s
}
-func (_m *XUnionWithEmptyStruct) SetS(s EmptyStruct) {
- _m.I_xUnionWithEmptyStructTag = XUnionWithEmptyStructS
- _m.S = s
+func UnionWithEmptyStructWithS(s EmptyStruct) UnionWithEmptyStruct {
+ var _u UnionWithEmptyStruct
+ _u.SetS(s)
+ return _u
}
-func XUnionWithEmptyStructWithS(s EmptyStruct) XUnionWithEmptyStruct {
- var _u XUnionWithEmptyStruct
+func (u *UnionWithEmptyStruct) SetForceAlignmentOf8(forceAlignmentOf8 uint64) {
+ u.I_unionWithEmptyStructTag = UnionWithEmptyStructForceAlignmentOf8
+ u.ForceAlignmentOf8 = forceAlignmentOf8
+}
+
+func UnionWithEmptyStructWithForceAlignmentOf8(forceAlignmentOf8 uint64) UnionWithEmptyStruct {
+ var _u UnionWithEmptyStruct
+ _u.SetForceAlignmentOf8(forceAlignmentOf8)
+ return _u
+}
+
+type I_unionSize8Align4Tag uint32
+
+const (
+ _ I_unionSize8Align4Tag = iota
+ UnionSize8Align4Unused1
+ UnionSize8Align4Unused2
+ UnionSize8Align4Variant
+)
+
+type UnionSize8Align4 struct {
+ I_unionSize8Align4Tag `fidl:"u,8,4" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Unused1 uint8 `fidl:"1"`
+ Unused2 uint8 `fidl:"2"`
+ Variant uint32 `fidl:"3"`
+}
+
+func (u *UnionSize8Align4) Which() I_unionSize8Align4Tag {
+ return u.I_unionSize8Align4Tag
+}
+
+func (u *UnionSize8Align4) SetUnused1(unused1 uint8) {
+ u.I_unionSize8Align4Tag = UnionSize8Align4Unused1
+ u.Unused1 = unused1
+}
+
+func UnionSize8Align4WithUnused1(unused1 uint8) UnionSize8Align4 {
+ var _u UnionSize8Align4
+ _u.SetUnused1(unused1)
+ return _u
+}
+
+func (u *UnionSize8Align4) SetUnused2(unused2 uint8) {
+ u.I_unionSize8Align4Tag = UnionSize8Align4Unused2
+ u.Unused2 = unused2
+}
+
+func UnionSize8Align4WithUnused2(unused2 uint8) UnionSize8Align4 {
+ var _u UnionSize8Align4
+ _u.SetUnused2(unused2)
+ return _u
+}
+
+func (u *UnionSize8Align4) SetVariant(variant uint32) {
+ u.I_unionSize8Align4Tag = UnionSize8Align4Variant
+ u.Variant = variant
+}
+
+func UnionSize8Align4WithVariant(variant uint32) UnionSize8Align4 {
+ var _u UnionSize8Align4
+ _u.SetVariant(variant)
+ return _u
+}
+
+type I_unionSize12Align4Tag uint32
+
+const (
+ _ I_unionSize12Align4Tag = iota
+ UnionSize12Align4Unused1
+ UnionSize12Align4Unused2
+ UnionSize12Align4Unused3
+ UnionSize12Align4Variant
+)
+
+type UnionSize12Align4 struct {
+ I_unionSize12Align4Tag `fidl:"u,12,4" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Unused1 uint8 `fidl:"1"`
+ Unused2 uint8 `fidl:"2"`
+ Unused3 uint8 `fidl:"3"`
+ Variant [6]uint8 `fidl:"4"`
+}
+
+func (u *UnionSize12Align4) Which() I_unionSize12Align4Tag {
+ return u.I_unionSize12Align4Tag
+}
+
+func (u *UnionSize12Align4) SetUnused1(unused1 uint8) {
+ u.I_unionSize12Align4Tag = UnionSize12Align4Unused1
+ u.Unused1 = unused1
+}
+
+func UnionSize12Align4WithUnused1(unused1 uint8) UnionSize12Align4 {
+ var _u UnionSize12Align4
+ _u.SetUnused1(unused1)
+ return _u
+}
+
+func (u *UnionSize12Align4) SetUnused2(unused2 uint8) {
+ u.I_unionSize12Align4Tag = UnionSize12Align4Unused2
+ u.Unused2 = unused2
+}
+
+func UnionSize12Align4WithUnused2(unused2 uint8) UnionSize12Align4 {
+ var _u UnionSize12Align4
+ _u.SetUnused2(unused2)
+ return _u
+}
+
+func (u *UnionSize12Align4) SetUnused3(unused3 uint8) {
+ u.I_unionSize12Align4Tag = UnionSize12Align4Unused3
+ u.Unused3 = unused3
+}
+
+func UnionSize12Align4WithUnused3(unused3 uint8) UnionSize12Align4 {
+ var _u UnionSize12Align4
+ _u.SetUnused3(unused3)
+ return _u
+}
+
+func (u *UnionSize12Align4) SetVariant(variant [6]uint8) {
+ u.I_unionSize12Align4Tag = UnionSize12Align4Variant
+ u.Variant = variant
+}
+
+func UnionSize12Align4WithVariant(variant [6]uint8) UnionSize12Align4 {
+ var _u UnionSize12Align4
+ _u.SetVariant(variant)
+ return _u
+}
+
+type I_unionSize24Align8Tag uint32
+
+const (
+ _ I_unionSize24Align8Tag = iota
+ UnionSize24Align8Unused1
+ UnionSize24Align8Unused2
+ UnionSize24Align8Unused3
+ UnionSize24Align8Variant
+)
+
+type UnionSize24Align8 struct {
+ I_unionSize24Align8Tag `fidl:"u,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Unused1 uint8 `fidl:"1"`
+ Unused2 uint8 `fidl:"2"`
+ Unused3 uint8 `fidl:"3"`
+ Variant StructSize16Align8 `fidl:"4"`
+}
+
+func (u *UnionSize24Align8) Which() I_unionSize24Align8Tag {
+ return u.I_unionSize24Align8Tag
+}
+
+func (u *UnionSize24Align8) SetUnused1(unused1 uint8) {
+ u.I_unionSize24Align8Tag = UnionSize24Align8Unused1
+ u.Unused1 = unused1
+}
+
+func UnionSize24Align8WithUnused1(unused1 uint8) UnionSize24Align8 {
+ var _u UnionSize24Align8
+ _u.SetUnused1(unused1)
+ return _u
+}
+
+func (u *UnionSize24Align8) SetUnused2(unused2 uint8) {
+ u.I_unionSize24Align8Tag = UnionSize24Align8Unused2
+ u.Unused2 = unused2
+}
+
+func UnionSize24Align8WithUnused2(unused2 uint8) UnionSize24Align8 {
+ var _u UnionSize24Align8
+ _u.SetUnused2(unused2)
+ return _u
+}
+
+func (u *UnionSize24Align8) SetUnused3(unused3 uint8) {
+ u.I_unionSize24Align8Tag = UnionSize24Align8Unused3
+ u.Unused3 = unused3
+}
+
+func UnionSize24Align8WithUnused3(unused3 uint8) UnionSize24Align8 {
+ var _u UnionSize24Align8
+ _u.SetUnused3(unused3)
+ return _u
+}
+
+func (u *UnionSize24Align8) SetVariant(variant StructSize16Align8) {
+ u.I_unionSize24Align8Tag = UnionSize24Align8Variant
+ u.Variant = variant
+}
+
+func UnionSize24Align8WithVariant(variant StructSize16Align8) UnionSize24Align8 {
+ var _u UnionSize24Align8
+ _u.SetVariant(variant)
+ return _u
+}
+
+type I_unionSize36Align4Tag uint32
+
+const (
+ _ I_unionSize36Align4Tag = iota
+ UnionSize36Align4Unused1
+ UnionSize36Align4Unused2
+ UnionSize36Align4Unused3
+ UnionSize36Align4Variant
+)
+
+type UnionSize36Align4 struct {
+ I_unionSize36Align4Tag `fidl:"u,36,4" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Unused1 uint8 `fidl:"1"`
+ Unused2 uint8 `fidl:"2"`
+ Unused3 uint8 `fidl:"3"`
+ Variant [32]uint8 `fidl:"4"`
+}
+
+func (u *UnionSize36Align4) Which() I_unionSize36Align4Tag {
+ return u.I_unionSize36Align4Tag
+}
+
+func (u *UnionSize36Align4) SetUnused1(unused1 uint8) {
+ u.I_unionSize36Align4Tag = UnionSize36Align4Unused1
+ u.Unused1 = unused1
+}
+
+func UnionSize36Align4WithUnused1(unused1 uint8) UnionSize36Align4 {
+ var _u UnionSize36Align4
+ _u.SetUnused1(unused1)
+ return _u
+}
+
+func (u *UnionSize36Align4) SetUnused2(unused2 uint8) {
+ u.I_unionSize36Align4Tag = UnionSize36Align4Unused2
+ u.Unused2 = unused2
+}
+
+func UnionSize36Align4WithUnused2(unused2 uint8) UnionSize36Align4 {
+ var _u UnionSize36Align4
+ _u.SetUnused2(unused2)
+ return _u
+}
+
+func (u *UnionSize36Align4) SetUnused3(unused3 uint8) {
+ u.I_unionSize36Align4Tag = UnionSize36Align4Unused3
+ u.Unused3 = unused3
+}
+
+func UnionSize36Align4WithUnused3(unused3 uint8) UnionSize36Align4 {
+ var _u UnionSize36Align4
+ _u.SetUnused3(unused3)
+ return _u
+}
+
+func (u *UnionSize36Align4) SetVariant(variant [32]uint8) {
+ u.I_unionSize36Align4Tag = UnionSize36Align4Variant
+ u.Variant = variant
+}
+
+func UnionSize36Align4WithVariant(variant [32]uint8) UnionSize36Align4 {
+ var _u UnionSize36Align4
+ _u.SetVariant(variant)
+ return _u
+}
+
+type I_unionOfUnionTag uint32
+
+const (
+ _ I_unionOfUnionTag = iota
+ UnionOfUnionUnused1
+ UnionOfUnionSize8align4
+ UnionOfUnionSize12align4
+ UnionOfUnionUnused2
+ UnionOfUnionSize24align8
+)
+
+type UnionOfUnion struct {
+ I_unionOfUnionTag `fidl:"u,32,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Unused1 uint8 `fidl:"1"`
+ Size8align4 UnionSize8Align4 `fidl:"2"`
+ Size12align4 UnionSize12Align4 `fidl:"3"`
+ Unused2 uint8 `fidl:"4"`
+ Size24align8 UnionSize24Align8 `fidl:"5"`
+}
+
+func (u *UnionOfUnion) Which() I_unionOfUnionTag {
+ return u.I_unionOfUnionTag
+}
+
+func (u *UnionOfUnion) SetUnused1(unused1 uint8) {
+ u.I_unionOfUnionTag = UnionOfUnionUnused1
+ u.Unused1 = unused1
+}
+
+func UnionOfUnionWithUnused1(unused1 uint8) UnionOfUnion {
+ var _u UnionOfUnion
+ _u.SetUnused1(unused1)
+ return _u
+}
+
+func (u *UnionOfUnion) SetSize8align4(size8align4 UnionSize8Align4) {
+ u.I_unionOfUnionTag = UnionOfUnionSize8align4
+ u.Size8align4 = size8align4
+}
+
+func UnionOfUnionWithSize8align4(size8align4 UnionSize8Align4) UnionOfUnion {
+ var _u UnionOfUnion
+ _u.SetSize8align4(size8align4)
+ return _u
+}
+
+func (u *UnionOfUnion) SetSize12align4(size12align4 UnionSize12Align4) {
+ u.I_unionOfUnionTag = UnionOfUnionSize12align4
+ u.Size12align4 = size12align4
+}
+
+func UnionOfUnionWithSize12align4(size12align4 UnionSize12Align4) UnionOfUnion {
+ var _u UnionOfUnion
+ _u.SetSize12align4(size12align4)
+ return _u
+}
+
+func (u *UnionOfUnion) SetUnused2(unused2 uint8) {
+ u.I_unionOfUnionTag = UnionOfUnionUnused2
+ u.Unused2 = unused2
+}
+
+func UnionOfUnionWithUnused2(unused2 uint8) UnionOfUnion {
+ var _u UnionOfUnion
+ _u.SetUnused2(unused2)
+ return _u
+}
+
+func (u *UnionOfUnion) SetSize24align8(size24align8 UnionSize24Align8) {
+ u.I_unionOfUnionTag = UnionOfUnionSize24align8
+ u.Size24align8 = size24align8
+}
+
+func UnionOfUnionWithSize24align8(size24align8 UnionSize24Align8) UnionOfUnion {
+ var _u UnionOfUnion
+ _u.SetSize24align8(size24align8)
+ return _u
+}
+
+type I_unionWithVectorTag uint32
+
+const (
+ _ I_unionWithVectorTag = iota
+ UnionWithVectorUnused
+ UnionWithVectorVectorOfUint8
+ UnionWithVectorString
+ UnionWithVectorVectorS3A1
+ UnionWithVectorVectorS3A2
+ UnionWithVectorHandles
+ UnionWithVectorArrayS3A1
+ UnionWithVectorArrayS3A2
+ UnionWithVectorVectorUnion
+)
+
+type UnionWithVector struct {
+ I_unionWithVectorTag `fidl:"u,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Unused uint8 `fidl:"1"`
+ VectorOfUint8 []uint8 `fidl:"2,"`
+ String string `fidl:"3,"`
+ VectorS3A1 []StructSize3Align1 `fidl:"4,"`
+ VectorS3A2 []StructSize3Align2 `fidl:"5,"`
+ Handles []uint32 `fidl:"6,"`
+ ArrayS3A1 [2]StructSize3Align1 `fidl:"7"`
+ ArrayS3A2 [2]StructSize3Align2 `fidl:"8"`
+ VectorUnion []UnionSize8Align4 `fidl:"9,"`
+}
+
+func (u *UnionWithVector) Which() I_unionWithVectorTag {
+ return u.I_unionWithVectorTag
+}
+
+func (u *UnionWithVector) SetUnused(unused uint8) {
+ u.I_unionWithVectorTag = UnionWithVectorUnused
+ u.Unused = unused
+}
+
+func UnionWithVectorWithUnused(unused uint8) UnionWithVector {
+ var _u UnionWithVector
+ _u.SetUnused(unused)
+ return _u
+}
+
+func (u *UnionWithVector) SetVectorOfUint8(vectorOfUint8 []uint8) {
+ u.I_unionWithVectorTag = UnionWithVectorVectorOfUint8
+ u.VectorOfUint8 = vectorOfUint8
+}
+
+func UnionWithVectorWithVectorOfUint8(vectorOfUint8 []uint8) UnionWithVector {
+ var _u UnionWithVector
+ _u.SetVectorOfUint8(vectorOfUint8)
+ return _u
+}
+
+func (u *UnionWithVector) SetString(string_ string) {
+ u.I_unionWithVectorTag = UnionWithVectorString
+ u.String = string_
+}
+
+func UnionWithVectorWithString(string_ string) UnionWithVector {
+ var _u UnionWithVector
+ _u.SetString(string_)
+ return _u
+}
+
+func (u *UnionWithVector) SetVectorS3A1(vectorS3A1 []StructSize3Align1) {
+ u.I_unionWithVectorTag = UnionWithVectorVectorS3A1
+ u.VectorS3A1 = vectorS3A1
+}
+
+func UnionWithVectorWithVectorS3A1(vectorS3A1 []StructSize3Align1) UnionWithVector {
+ var _u UnionWithVector
+ _u.SetVectorS3A1(vectorS3A1)
+ return _u
+}
+
+func (u *UnionWithVector) SetVectorS3A2(vectorS3A2 []StructSize3Align2) {
+ u.I_unionWithVectorTag = UnionWithVectorVectorS3A2
+ u.VectorS3A2 = vectorS3A2
+}
+
+func UnionWithVectorWithVectorS3A2(vectorS3A2 []StructSize3Align2) UnionWithVector {
+ var _u UnionWithVector
+ _u.SetVectorS3A2(vectorS3A2)
+ return _u
+}
+
+func (u *UnionWithVector) SetHandles(handles []uint32) {
+ u.I_unionWithVectorTag = UnionWithVectorHandles
+ u.Handles = handles
+}
+
+func UnionWithVectorWithHandles(handles []uint32) UnionWithVector {
+ var _u UnionWithVector
+ _u.SetHandles(handles)
+ return _u
+}
+
+func (u *UnionWithVector) SetArrayS3A1(arrayS3A1 [2]StructSize3Align1) {
+ u.I_unionWithVectorTag = UnionWithVectorArrayS3A1
+ u.ArrayS3A1 = arrayS3A1
+}
+
+func UnionWithVectorWithArrayS3A1(arrayS3A1 [2]StructSize3Align1) UnionWithVector {
+ var _u UnionWithVector
+ _u.SetArrayS3A1(arrayS3A1)
+ return _u
+}
+
+func (u *UnionWithVector) SetArrayS3A2(arrayS3A2 [2]StructSize3Align2) {
+ u.I_unionWithVectorTag = UnionWithVectorArrayS3A2
+ u.ArrayS3A2 = arrayS3A2
+}
+
+func UnionWithVectorWithArrayS3A2(arrayS3A2 [2]StructSize3Align2) UnionWithVector {
+ var _u UnionWithVector
+ _u.SetArrayS3A2(arrayS3A2)
+ return _u
+}
+
+func (u *UnionWithVector) SetVectorUnion(vectorUnion []UnionSize8Align4) {
+ u.I_unionWithVectorTag = UnionWithVectorVectorUnion
+ u.VectorUnion = vectorUnion
+}
+
+func UnionWithVectorWithVectorUnion(vectorUnion []UnionSize8Align4) UnionWithVector {
+ var _u UnionWithVector
+ _u.SetVectorUnion(vectorUnion)
+ return _u
+}
+
+type I_stringUnionTag uint32
+
+const (
+ _ I_stringUnionTag = iota
+ StringUnionUnused
+ StringUnionS
+)
+
+type StringUnion struct {
+ I_stringUnionTag `fidl:"u,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ Unused uint8 `fidl:"1"`
+ S string `fidl:"2,"`
+}
+
+func (u *StringUnion) Which() I_stringUnionTag {
+ return u.I_stringUnionTag
+}
+
+func (u *StringUnion) SetUnused(unused uint8) {
+ u.I_stringUnionTag = StringUnionUnused
+ u.Unused = unused
+}
+
+func StringUnionWithUnused(unused uint8) StringUnion {
+ var _u StringUnion
+ _u.SetUnused(unused)
+ return _u
+}
+
+func (u *StringUnion) SetS(s string) {
+ u.I_stringUnionTag = StringUnionS
+ u.S = s
+}
+
+func StringUnionWithS(s string) StringUnion {
+ var _u StringUnion
_u.SetS(s)
return _u
}
@@ -1231,6 +2019,169 @@
return _u
}
+type I_xUnionWithEmptyStructTag uint32
+
+const (
+ XUnionWithEmptyStruct_unknownData = 0 // 0x00000000
+ XUnionWithEmptyStructS = 1956241662 // 0x7499e0fe
+)
+
+type XUnionWithEmptyStruct struct {
+ I_xUnionWithEmptyStructTag `fidl:"x,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ I_unknownData []byte
+ S EmptyStruct `fidl:"1956241662"`
+}
+
+func (_m *XUnionWithEmptyStruct) Which() I_xUnionWithEmptyStructTag {
+ switch _m.I_xUnionWithEmptyStructTag {
+ case 1956241662:
+ return XUnionWithEmptyStructS
+ default:
+ return XUnionWithEmptyStruct_unknownData
+ }
+}
+
+func (_m *XUnionWithEmptyStruct) Ordinal() uint32 {
+ return uint32(_m.I_xUnionWithEmptyStructTag)
+}
+
+func (_m *XUnionWithEmptyStruct) SetS(s EmptyStruct) {
+ _m.I_xUnionWithEmptyStructTag = XUnionWithEmptyStructS
+ _m.S = s
+}
+
+func XUnionWithEmptyStructWithS(s EmptyStruct) XUnionWithEmptyStruct {
+ var _u XUnionWithEmptyStruct
+ _u.SetS(s)
+ return _u
+}
+
+type I_xUnionWithStructTag uint32
+
+const (
+ XUnionWithStruct_unknownData = 0 // 0x00000000
+ XUnionWithStructS = 423517204 // 0x193e5c14
+)
+
+type XUnionWithStruct struct {
+ I_xUnionWithStructTag `fidl:"x,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ I_unknownData []byte
+ S StructSize3Align1 `fidl:"423517204"`
+}
+
+func (_m *XUnionWithStruct) Which() I_xUnionWithStructTag {
+ switch _m.I_xUnionWithStructTag {
+ case 423517204:
+ return XUnionWithStructS
+ default:
+ return XUnionWithStruct_unknownData
+ }
+}
+
+func (_m *XUnionWithStruct) Ordinal() uint32 {
+ return uint32(_m.I_xUnionWithStructTag)
+}
+
+func (_m *XUnionWithStruct) SetS(s StructSize3Align1) {
+ _m.I_xUnionWithStructTag = XUnionWithStructS
+ _m.S = s
+}
+
+func XUnionWithStructWithS(s StructSize3Align1) XUnionWithStruct {
+ var _u XUnionWithStruct
+ _u.SetS(s)
+ return _u
+}
+
+type I_xUnionWithXUnionTag uint32
+
+const (
+ XUnionWithXUnion_unknownData = 0 // 0x00000000
+ XUnionWithXUnionXu = 1812359455 // 0x6c06691f
+)
+
+type XUnionWithXUnion struct {
+ I_xUnionWithXUnionTag `fidl:"x,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ I_unknownData []byte
+ Xu XUnionWithStruct `fidl:"1812359455"`
+}
+
+func (_m *XUnionWithXUnion) Which() I_xUnionWithXUnionTag {
+ switch _m.I_xUnionWithXUnionTag {
+ case 1812359455:
+ return XUnionWithXUnionXu
+ default:
+ return XUnionWithXUnion_unknownData
+ }
+}
+
+func (_m *XUnionWithXUnion) Ordinal() uint32 {
+ return uint32(_m.I_xUnionWithXUnionTag)
+}
+
+func (_m *XUnionWithXUnion) SetXu(xu XUnionWithStruct) {
+ _m.I_xUnionWithXUnionTag = XUnionWithXUnionXu
+ _m.Xu = xu
+}
+
+func XUnionWithXUnionWithXu(xu XUnionWithStruct) XUnionWithXUnion {
+ var _u XUnionWithXUnion
+ _u.SetXu(xu)
+ return _u
+}
+
+type I_xUnionWithUnionsTag uint32
+
+const (
+ XUnionWithUnions_unknownData = 0 // 0x00000000
+ XUnionWithUnionsU1 = 684009751 // 0x28c52917
+ XUnionWithUnionsU2 = 1971727256 // 0x75862b98
+)
+
+type XUnionWithUnions struct {
+ I_xUnionWithUnionsTag `fidl:"x,24,8" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"24" fidl_alignment_v1_no_ee:"8"`
+ I_unknownData []byte
+ U1 UnionSize8Align4 `fidl:"684009751"`
+ U2 UnionSize12Align4 `fidl:"1971727256"`
+}
+
+func (_m *XUnionWithUnions) Which() I_xUnionWithUnionsTag {
+ switch _m.I_xUnionWithUnionsTag {
+ case 684009751:
+ return XUnionWithUnionsU1
+ case 1971727256:
+ return XUnionWithUnionsU2
+ default:
+ return XUnionWithUnions_unknownData
+ }
+}
+
+func (_m *XUnionWithUnions) Ordinal() uint32 {
+ return uint32(_m.I_xUnionWithUnionsTag)
+}
+
+func (_m *XUnionWithUnions) SetU1(u1 UnionSize8Align4) {
+ _m.I_xUnionWithUnionsTag = XUnionWithUnionsU1
+ _m.U1 = u1
+}
+
+func XUnionWithUnionsWithU1(u1 UnionSize8Align4) XUnionWithUnions {
+ var _u XUnionWithUnions
+ _u.SetU1(u1)
+ return _u
+}
+
+func (_m *XUnionWithUnions) SetU2(u2 UnionSize12Align4) {
+ _m.I_xUnionWithUnionsTag = XUnionWithUnionsU2
+ _m.U2 = u2
+}
+
+func XUnionWithUnionsWithU2(u2 UnionSize12Align4) XUnionWithUnions {
+ var _u XUnionWithUnions
+ _u.SetU2(u2)
+ return _u
+}
+
type XUnionInTable struct {
_ struct{} `fidl:"t,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
Before string `fidl:"1,"`
@@ -1313,36 +2264,6 @@
u.AfterPresent = false
}
-type TableWithEmptyStruct struct {
- _ struct{} `fidl:"t,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
- S EmptyStruct `fidl:"1"`
- SPresent bool
-}
-
-func (u *TableWithEmptyStruct) SetS(s EmptyStruct) {
- u.S = s
- u.SPresent = true
-}
-
-func (u *TableWithEmptyStruct) GetS() EmptyStruct {
- return u.S
-}
-
-func (u *TableWithEmptyStruct) GetSWithDefault(_default EmptyStruct) EmptyStruct {
- if !u.HasS() {
- return _default
- }
- return u.S
-}
-
-func (u *TableWithEmptyStruct) HasS() bool {
- return u.SPresent
-}
-
-func (u *TableWithEmptyStruct) ClearS() {
- u.SPresent = false
-}
-
type SimpleTable struct {
_ struct{} `fidl:"t,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
X int64 `fidl:"1"`
@@ -1481,6 +2402,312 @@
u.BazPresent = false
}
+type TableWithEmptyStruct struct {
+ _ struct{} `fidl:"t,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ S EmptyStruct `fidl:"1"`
+ SPresent bool
+}
+
+func (u *TableWithEmptyStruct) SetS(s EmptyStruct) {
+ u.S = s
+ u.SPresent = true
+}
+
+func (u *TableWithEmptyStruct) GetS() EmptyStruct {
+ return u.S
+}
+
+func (u *TableWithEmptyStruct) GetSWithDefault(_default EmptyStruct) EmptyStruct {
+ if !u.HasS() {
+ return _default
+ }
+ return u.S
+}
+
+func (u *TableWithEmptyStruct) HasS() bool {
+ return u.SPresent
+}
+
+func (u *TableWithEmptyStruct) ClearS() {
+ u.SPresent = false
+}
+
+type TableStructWithReservedSandwich struct {
+ _ struct{} `fidl:"t,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ S1 StructSize3Align1 `fidl:"2"`
+ S1Present bool
+ S2 StructSize3Align1 `fidl:"3"`
+ S2Present bool
+}
+
+func (u *TableStructWithReservedSandwich) SetS1(s1 StructSize3Align1) {
+ u.S1 = s1
+ u.S1Present = true
+}
+
+func (u *TableStructWithReservedSandwich) GetS1() StructSize3Align1 {
+ return u.S1
+}
+
+func (u *TableStructWithReservedSandwich) GetS1WithDefault(_default StructSize3Align1) StructSize3Align1 {
+ if !u.HasS1() {
+ return _default
+ }
+ return u.S1
+}
+
+func (u *TableStructWithReservedSandwich) HasS1() bool {
+ return u.S1Present
+}
+
+func (u *TableStructWithReservedSandwich) ClearS1() {
+ u.S1Present = false
+}
+
+func (u *TableStructWithReservedSandwich) SetS2(s2 StructSize3Align1) {
+ u.S2 = s2
+ u.S2Present = true
+}
+
+func (u *TableStructWithReservedSandwich) GetS2() StructSize3Align1 {
+ return u.S2
+}
+
+func (u *TableStructWithReservedSandwich) GetS2WithDefault(_default StructSize3Align1) StructSize3Align1 {
+ if !u.HasS2() {
+ return _default
+ }
+ return u.S2
+}
+
+func (u *TableStructWithReservedSandwich) HasS2() bool {
+ return u.S2Present
+}
+
+func (u *TableStructWithReservedSandwich) ClearS2() {
+ u.S2Present = false
+}
+
+type TableStructWithUint32Sandwich struct {
+ _ struct{} `fidl:"t,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ I uint32 `fidl:"1"`
+ IPresent bool
+ S1 StructSize3Align1 `fidl:"2"`
+ S1Present bool
+ S2 StructSize3Align1 `fidl:"3"`
+ S2Present bool
+ I2 uint32 `fidl:"4"`
+ I2Present bool
+}
+
+func (u *TableStructWithUint32Sandwich) SetI(i uint32) {
+ u.I = i
+ u.IPresent = true
+}
+
+func (u *TableStructWithUint32Sandwich) GetI() uint32 {
+ return u.I
+}
+
+func (u *TableStructWithUint32Sandwich) GetIWithDefault(_default uint32) uint32 {
+ if !u.HasI() {
+ return _default
+ }
+ return u.I
+}
+
+func (u *TableStructWithUint32Sandwich) HasI() bool {
+ return u.IPresent
+}
+
+func (u *TableStructWithUint32Sandwich) ClearI() {
+ u.IPresent = false
+}
+
+func (u *TableStructWithUint32Sandwich) SetS1(s1 StructSize3Align1) {
+ u.S1 = s1
+ u.S1Present = true
+}
+
+func (u *TableStructWithUint32Sandwich) GetS1() StructSize3Align1 {
+ return u.S1
+}
+
+func (u *TableStructWithUint32Sandwich) GetS1WithDefault(_default StructSize3Align1) StructSize3Align1 {
+ if !u.HasS1() {
+ return _default
+ }
+ return u.S1
+}
+
+func (u *TableStructWithUint32Sandwich) HasS1() bool {
+ return u.S1Present
+}
+
+func (u *TableStructWithUint32Sandwich) ClearS1() {
+ u.S1Present = false
+}
+
+func (u *TableStructWithUint32Sandwich) SetS2(s2 StructSize3Align1) {
+ u.S2 = s2
+ u.S2Present = true
+}
+
+func (u *TableStructWithUint32Sandwich) GetS2() StructSize3Align1 {
+ return u.S2
+}
+
+func (u *TableStructWithUint32Sandwich) GetS2WithDefault(_default StructSize3Align1) StructSize3Align1 {
+ if !u.HasS2() {
+ return _default
+ }
+ return u.S2
+}
+
+func (u *TableStructWithUint32Sandwich) HasS2() bool {
+ return u.S2Present
+}
+
+func (u *TableStructWithUint32Sandwich) ClearS2() {
+ u.S2Present = false
+}
+
+func (u *TableStructWithUint32Sandwich) SetI2(i2 uint32) {
+ u.I2 = i2
+ u.I2Present = true
+}
+
+func (u *TableStructWithUint32Sandwich) GetI2() uint32 {
+ return u.I2
+}
+
+func (u *TableStructWithUint32Sandwich) GetI2WithDefault(_default uint32) uint32 {
+ if !u.HasI2() {
+ return _default
+ }
+ return u.I2
+}
+
+func (u *TableStructWithUint32Sandwich) HasI2() bool {
+ return u.I2Present
+}
+
+func (u *TableStructWithUint32Sandwich) ClearI2() {
+ u.I2Present = false
+}
+
+type TableUnionWithVectorReservedSandwich struct {
+ _ struct{} `fidl:"t,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ Uv UnionWithVector `fidl:"2"`
+ UvPresent bool
+}
+
+func (u *TableUnionWithVectorReservedSandwich) SetUv(uv UnionWithVector) {
+ u.Uv = uv
+ u.UvPresent = true
+}
+
+func (u *TableUnionWithVectorReservedSandwich) GetUv() UnionWithVector {
+ return u.Uv
+}
+
+func (u *TableUnionWithVectorReservedSandwich) GetUvWithDefault(_default UnionWithVector) UnionWithVector {
+ if !u.HasUv() {
+ return _default
+ }
+ return u.Uv
+}
+
+func (u *TableUnionWithVectorReservedSandwich) HasUv() bool {
+ return u.UvPresent
+}
+
+func (u *TableUnionWithVectorReservedSandwich) ClearUv() {
+ u.UvPresent = false
+}
+
+type TableUnionWithVectorStructSandwich struct {
+ _ struct{} `fidl:"t,16,8" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v1_no_ee:"16" fidl_alignment_v1_no_ee:"8"`
+ S1 StructSize3Align1 `fidl:"1"`
+ S1Present bool
+ Uv UnionWithVector `fidl:"2"`
+ UvPresent bool
+ S2 StructSize3Align1 `fidl:"3"`
+ S2Present bool
+}
+
+func (u *TableUnionWithVectorStructSandwich) SetS1(s1 StructSize3Align1) {
+ u.S1 = s1
+ u.S1Present = true
+}
+
+func (u *TableUnionWithVectorStructSandwich) GetS1() StructSize3Align1 {
+ return u.S1
+}
+
+func (u *TableUnionWithVectorStructSandwich) GetS1WithDefault(_default StructSize3Align1) StructSize3Align1 {
+ if !u.HasS1() {
+ return _default
+ }
+ return u.S1
+}
+
+func (u *TableUnionWithVectorStructSandwich) HasS1() bool {
+ return u.S1Present
+}
+
+func (u *TableUnionWithVectorStructSandwich) ClearS1() {
+ u.S1Present = false
+}
+
+func (u *TableUnionWithVectorStructSandwich) SetUv(uv UnionWithVector) {
+ u.Uv = uv
+ u.UvPresent = true
+}
+
+func (u *TableUnionWithVectorStructSandwich) GetUv() UnionWithVector {
+ return u.Uv
+}
+
+func (u *TableUnionWithVectorStructSandwich) GetUvWithDefault(_default UnionWithVector) UnionWithVector {
+ if !u.HasUv() {
+ return _default
+ }
+ return u.Uv
+}
+
+func (u *TableUnionWithVectorStructSandwich) HasUv() bool {
+ return u.UvPresent
+}
+
+func (u *TableUnionWithVectorStructSandwich) ClearUv() {
+ u.UvPresent = false
+}
+
+func (u *TableUnionWithVectorStructSandwich) SetS2(s2 StructSize3Align1) {
+ u.S2 = s2
+ u.S2Present = true
+}
+
+func (u *TableUnionWithVectorStructSandwich) GetS2() StructSize3Align1 {
+ return u.S2
+}
+
+func (u *TableUnionWithVectorStructSandwich) GetS2WithDefault(_default StructSize3Align1) StructSize3Align1 {
+ if !u.HasS2() {
+ return _default
+ }
+ return u.S2
+}
+
+func (u *TableUnionWithVectorStructSandwich) HasS2() bool {
+ return u.S2Present
+}
+
+func (u *TableUnionWithVectorStructSandwich) ClearS2() {
+ u.S2Present = false
+}
+
type EthernetDeviceInterface _bindings.ChannelProxy
type EthernetDevice interface {
diff --git a/src/syscall/zx/fidl/encoding_new.go b/src/syscall/zx/fidl/encoding_new.go
index 9e35dd7..650243d 100644
--- a/src/syscall/zx/fidl/encoding_new.go
+++ b/src/syscall/zx/fidl/encoding_new.go
@@ -261,14 +261,16 @@
alignmentV1: alignmentV1,
}, nil
case unionTag:
- return mUnion{
+ m := mUnion{
fields: fields,
ordinals: ordinals,
sizeOld: sizeOld,
alignmentOld: alignmentOld,
sizeV1: sizeV1,
alignmentV1: alignmentV1,
- }, nil
+ }
+ m.mXUnion = mUnionToMXUnion(m)
+ return m, nil
case xunionTag, strictXunionTag:
strictness := strictness(kind == strictXunionTag)
@@ -298,6 +300,20 @@
}
}
+func mUnionToMXUnion(m mUnion) mXUnion {
+ ordinalToFields := make(map[int]mField)
+ for i := 0; i < len(m.fields); i++ {
+ ordinalToFields[m.ordinals[i]] = m.fields[i]
+ }
+ return mXUnion{
+ fields: ordinalToFields,
+ unionToXunion: true,
+ sizeV1: m.sizeV1,
+ alignmentV1: m.alignmentV1,
+ strictness: true,
+ }
+}
+
func readIntTag(field reflect.StructField, tagKey string) (int, error) {
content, ok := field.Tag.Lookup(tagKey)
if !ok {
@@ -455,19 +471,25 @@
case mVector:
return mOptVector(m), nil
case mEmptyStruct:
- return mOptStructUnion{
+ return mPointer{
Marshaler: m,
elemTyp: typ,
}, nil
case mStruct:
- return mOptStructUnion{
+ return mPointer{
Marshaler: m,
elemTyp: typ,
}, nil
case mUnion:
- return mOptStructUnion{
- Marshaler: m,
- elemTyp: typ,
+ return mOptUnion{
+ mPointer: mPointer{
+ Marshaler: m,
+ elemTyp: typ,
+ },
+ mOptXUnion: mOptXUnion{
+ mXUnion: m.mXUnion,
+ typ: typ,
+ },
}, nil
case mXUnion:
return mOptXUnion{
@@ -506,7 +528,8 @@
mXUnion{},
mOptXUnion{},
mTable{},
- mOptStructUnion{},
+ mPointer{},
+ mOptUnion{},
mArray{},
mVector{},
mOptVector{},
@@ -633,6 +656,8 @@
ordinals []int
sizeOld, alignmentOld int
sizeV1, alignmentV1 int
+
+ mXUnion
}
func (m mUnion) getMarshalSize(ctx MarshalerContext) int {
@@ -665,7 +690,7 @@
func (m mUnion) marshal(ctx MarshalerContext, v reflect.Value, out *encoder) error {
if ctx.EncodeUnionsAsXUnionBytes {
- return m.marshalAsXUnion(ctx, v, out)
+ return m.mXUnion.marshal(ctx, v, out)
}
// Kind.
@@ -692,38 +717,9 @@
return nil
}
-func (m mUnion) marshalAsXUnion(ctx MarshalerContext, v reflect.Value, out *encoder) error {
- // Ordinal.
- fieldTag := int(v.Field(0).Uint())
- ordinal, err := strconv.ParseInt(v.Type().Field(fieldTag).Tag.Get("fidl"), 0, 64)
- if err != nil {
- return errors.New("error parsing ordinal from tag: " + err.Error())
- }
- out.writeUint(uint64(ordinal), 8)
- // Field.
- field := m.fields[fieldTag-1]
- if err := marshalEnvelopePresent(ctx, field, v.Field(field.index), out); err != nil {
- return err
- }
- return nil
-}
-
func (m mUnion) unmarshal(ctx MarshalerContext, in *decoder, v reflect.Value) error {
if ctx.DecodeUnionsFromXUnionBytes {
- ordinalToFields := make(map[int]mField)
- for i := 0; i < len(m.fields); i++ {
- ordinalToFields[m.ordinals[i]] = m.fields[i]
- }
- // Just use the xunion unmarshaler because the layout of union and xunion
- // is the same in go.
- xunion := mXUnion{
- fields: ordinalToFields,
- unionToXunion: true,
- sizeV1: m.sizeV1,
- alignmentV1: m.alignmentV1,
- strictness: true,
- }
- return xunion.unmarshal(ctx, in, v)
+ return m.mXUnion.unmarshal(ctx, in, v)
}
// Save the head for proper padding.
@@ -1211,20 +1207,20 @@
return nil
}
-type mOptStructUnion struct {
+type mPointer struct {
Marshaler
elemTyp reflect.Type
}
-func (m mOptStructUnion) getMarshalSize(ctx MarshalerContext) int {
+func (m mPointer) getMarshalSize(ctx MarshalerContext) int {
return 8
}
-func (m mOptStructUnion) getUnmarshalSize(ctx MarshalerContext) int {
+func (m mPointer) getUnmarshalSize(ctx MarshalerContext) int {
return 8
}
-func (m mOptStructUnion) marshal(ctx MarshalerContext, v reflect.Value, out *encoder) error {
+func (m mPointer) marshal(ctx MarshalerContext, v reflect.Value, out *encoder) error {
// Nil?
if v.IsNil() {
out.writeUint(noAlloc, 8)
@@ -1249,7 +1245,7 @@
return nil
}
-func (m mOptStructUnion) unmarshal(ctx MarshalerContext, in *decoder, v reflect.Value) error {
+func (m mPointer) unmarshal(ctx MarshalerContext, in *decoder, v reflect.Value) error {
// Nil?
ptr, err := in.readUint(8)
if err != nil {
@@ -1284,6 +1280,41 @@
return nil
}
+type mOptUnion struct {
+ mPointer
+ mOptXUnion
+}
+
+func (m mOptUnion) getMarshalSize(ctx MarshalerContext) int {
+ if ctx.EncodeUnionsAsXUnionBytes {
+ return 24
+ }
+ return 8
+}
+
+func (m mOptUnion) getUnmarshalSize(ctx MarshalerContext) int {
+ if ctx.DecodeUnionsFromXUnionBytes {
+ return 24
+ }
+ return 8
+}
+
+func (m mOptUnion) marshal(ctx MarshalerContext, v reflect.Value, out *encoder) error {
+ if ctx.EncodeUnionsAsXUnionBytes {
+ return m.mOptXUnion.marshal(ctx, v, out)
+ } else {
+ return m.mPointer.marshal(ctx, v, out)
+ }
+}
+
+func (m mOptUnion) unmarshal(ctx MarshalerContext, in *decoder, v reflect.Value) error {
+ if ctx.DecodeUnionsFromXUnionBytes {
+ return m.mOptXUnion.unmarshal(ctx, in, v)
+ } else {
+ return m.mPointer.unmarshal(ctx, in, v)
+ }
+}
+
type mArray struct {
Marshaler
size int
diff --git a/src/syscall/zx/fidl/fidl_test/conformance_test.go b/src/syscall/zx/fidl/fidl_test/conformance_test.go
index 5246cd5..ba494c7 100644
--- a/src/syscall/zx/fidl/fidl_test/conformance_test.go
+++ b/src/syscall/zx/fidl/fidl_test/conformance_test.go
@@ -1574,6 +1574,1917 @@
}
{
+ v1 := conformance.Sandwich1{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize8Align4{}
+ var v4 uint32 = 202050057
+ v3.SetVariant(v4)
+ v1.TheUnion = v3
+ var v5 uint32 = 134678021
+ v1.After = v5
+
+ encodeSuccessCase{
+ name: "Sandwich1Case1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x02, 0x00, 0x00, 0x00,
+ 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x07, 0x08,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich1{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize8Align4{}
+ var v4 uint32 = 202050057
+ v3.SetVariant(v4)
+ v1.TheUnion = v3
+ var v5 uint32 = 134678021
+ v1.After = v5
+
+ encodeSuccessCase{
+ name: "Sandwich1Case1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x09, 0x0a, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich2{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize12Align4{}
+ var v4 uint8 = 160
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ var v8 uint8 = 164
+ var v9 uint8 = 165
+ v10 := [6]uint8{v4, v5, v6, v7, v8, v9}
+ v3.SetVariant(v10)
+ v1.TheUnion = v3
+ var v11 uint32 = 134678021
+ v1.After = v11
+
+ encodeSuccessCase{
+ name: "Sandwich2Case1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x03, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich2{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize12Align4{}
+ var v4 uint8 = 160
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ var v8 uint8 = 164
+ var v9 uint8 = 165
+ v10 := [6]uint8{v4, v5, v6, v7, v8, v9}
+ v3.SetVariant(v10)
+ v1.TheUnion = v3
+ var v11 uint32 = 134678021
+ v1.After = v11
+
+ encodeSuccessCase{
+ name: "Sandwich2Case1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich3{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize24Align8{}
+ v4 := conformance.StructSize16Align8{}
+ var v5 uint64 = 12080525177006498208
+ v4.F1 = v5
+ var v6 uint64 = 12659246559711111592
+ v4.F2 = v6
+ v3.SetVariant(v4)
+ v1.TheUnion = v3
+ var v7 uint32 = 134678021
+ v1.After = v7
+
+ encodeSuccessCase{
+ name: "Sandwich3Case1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich3{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize24Align8{}
+ v4 := conformance.StructSize16Align8{}
+ var v5 uint64 = 12080525177006498208
+ v4.F1 = v5
+ var v6 uint64 = 12659246559711111592
+ v4.F2 = v6
+ v3.SetVariant(v4)
+ v1.TheUnion = v3
+ var v7 uint32 = 134678021
+ v1.After = v7
+
+ encodeSuccessCase{
+ name: "Sandwich3Case1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich4{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize36Align4{}
+ var v4 uint8 = 160
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ var v8 uint8 = 164
+ var v9 uint8 = 165
+ var v10 uint8 = 166
+ var v11 uint8 = 167
+ var v12 uint8 = 168
+ var v13 uint8 = 169
+ var v14 uint8 = 170
+ var v15 uint8 = 171
+ var v16 uint8 = 172
+ var v17 uint8 = 173
+ var v18 uint8 = 174
+ var v19 uint8 = 175
+ var v20 uint8 = 176
+ var v21 uint8 = 177
+ var v22 uint8 = 178
+ var v23 uint8 = 179
+ var v24 uint8 = 180
+ var v25 uint8 = 181
+ var v26 uint8 = 182
+ var v27 uint8 = 183
+ var v28 uint8 = 184
+ var v29 uint8 = 185
+ var v30 uint8 = 186
+ var v31 uint8 = 187
+ var v32 uint8 = 188
+ var v33 uint8 = 189
+ var v34 uint8 = 190
+ var v35 uint8 = 191
+ v36 := [32]uint8{v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35}
+ v3.SetVariant(v36)
+ v1.TheUnion = v3
+ var v37 uint32 = 134678021
+ v1.After = v37
+
+ encodeSuccessCase{
+ name: "Sandwich4Case1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x03, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich4{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize36Align4{}
+ var v4 uint8 = 160
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ var v8 uint8 = 164
+ var v9 uint8 = 165
+ var v10 uint8 = 166
+ var v11 uint8 = 167
+ var v12 uint8 = 168
+ var v13 uint8 = 169
+ var v14 uint8 = 170
+ var v15 uint8 = 171
+ var v16 uint8 = 172
+ var v17 uint8 = 173
+ var v18 uint8 = 174
+ var v19 uint8 = 175
+ var v20 uint8 = 176
+ var v21 uint8 = 177
+ var v22 uint8 = 178
+ var v23 uint8 = 179
+ var v24 uint8 = 180
+ var v25 uint8 = 181
+ var v26 uint8 = 182
+ var v27 uint8 = 183
+ var v28 uint8 = 184
+ var v29 uint8 = 185
+ var v30 uint8 = 186
+ var v31 uint8 = 187
+ var v32 uint8 = 188
+ var v33 uint8 = 189
+ var v34 uint8 = 190
+ var v35 uint8 = 191
+ v36 := [32]uint8{v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35}
+ v3.SetVariant(v36)
+ v1.TheUnion = v3
+ var v37 uint32 = 134678021
+ v1.After = v37
+
+ encodeSuccessCase{
+ name: "Sandwich4Case1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich5{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionOfUnion{}
+ v4 := conformance.UnionSize8Align4{}
+ var v5 uint32 = 202050057
+ v4.SetVariant(v5)
+ v3.SetSize8align4(v4)
+ v1.UnionOfUnion = v3
+ var v6 uint32 = 134678021
+ v1.After = v6
+
+ encodeSuccessCase{
+ name: "Sandwich5Case1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x09, 0x0a, 0x0b, 0x0c,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich5{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionOfUnion{}
+ v4 := conformance.UnionSize8Align4{}
+ var v5 uint32 = 202050057
+ v4.SetVariant(v5)
+ v3.SetSize8align4(v4)
+ v1.UnionOfUnion = v3
+ var v6 uint32 = 134678021
+ v1.After = v6
+
+ encodeSuccessCase{
+ name: "Sandwich5Case1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x09, 0x0a, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich5{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionOfUnion{}
+ v4 := conformance.UnionSize24Align8{}
+ v5 := conformance.StructSize16Align8{}
+ var v6 uint64 = 12080525177006498208
+ v5.F1 = v6
+ var v7 uint64 = 12659246559711111592
+ v5.F2 = v7
+ v4.SetVariant(v5)
+ v3.SetSize24align8(v4)
+ v1.UnionOfUnion = v3
+ var v8 uint32 = 134678021
+ v1.After = v8
+
+ encodeSuccessCase{
+ name: "Sandwich5Case2",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich5{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionOfUnion{}
+ v4 := conformance.UnionSize24Align8{}
+ v5 := conformance.StructSize16Align8{}
+ var v6 uint64 = 12080525177006498208
+ v5.F1 = v6
+ var v7 uint64 = 12659246559711111592
+ v5.F2 = v7
+ v4.SetVariant(v5)
+ v3.SetSize24align8(v4)
+ v1.UnionOfUnion = v3
+ var v8 uint32 = 134678021
+ v1.After = v8
+
+ encodeSuccessCase{
+ name: "Sandwich5Case2_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ var v4 uint8 = 160
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ var v8 uint8 = 164
+ var v9 uint8 = 165
+ v10 := []uint8{v4, v5, v6, v7, v8, v9}
+ v3.SetVectorOfUint8(v10)
+ v1.TheUnion = v3
+ var v11 uint32 = 134678021
+ v1.After = v11
+
+ encodeSuccessCase{
+ name: "Sandwich6Case1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ var v4 uint8 = 160
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ var v8 uint8 = 164
+ var v9 uint8 = 165
+ v10 := []uint8{v4, v5, v6, v7, v8, v9}
+ v3.SetVectorOfUint8(v10)
+ v1.TheUnion = v3
+ var v11 uint32 = 134678021
+ v1.After = v11
+
+ encodeSuccessCase{
+ name: "Sandwich6Case1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := []uint8{}
+ v3.SetVectorOfUint8(v4)
+ v1.TheUnion = v3
+ var v5 uint32 = 134678021
+ v1.After = v5
+
+ encodeSuccessCase{
+ name: "Sandwich6Case1AbsentVector",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := []uint8{}
+ v3.SetVectorOfUint8(v4)
+ v1.TheUnion = v3
+ var v5 uint32 = 134678021
+ v1.After = v5
+
+ encodeSuccessCase{
+ name: "Sandwich6Case1AbsentVector_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := "soft migrations rock!"
+ v3.SetString(v4)
+ v1.TheUnion = v3
+ var v5 uint32 = 134678021
+ v1.After = v5
+
+ encodeSuccessCase{
+ name: "Sandwich6Case2",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x73, 0x6f, 0x66, 0x74, 0x20, 0x6d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20,
+ 0x72, 0x6f, 0x63, 0x6b, 0x21, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := "soft migrations rock!"
+ v3.SetString(v4)
+ v1.TheUnion = v3
+ var v5 uint32 = 134678021
+ v1.After = v5
+
+ encodeSuccessCase{
+ name: "Sandwich6Case2_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x73, 0x6f, 0x66, 0x74, 0x20, 0x6d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20,
+ 0x72, 0x6f, 0x63, 0x6b, 0x21, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align1{}
+ var v5 uint8 = 115
+ var v6 uint8 = 111
+ var v7 uint8 = 102
+ v8 := [3]uint8{v5, v6, v7}
+ v4.ThreeBytes = v8
+ v9 := conformance.StructSize3Align1{}
+ var v10 uint8 = 32
+ var v11 uint8 = 109
+ var v12 uint8 = 105
+ v13 := [3]uint8{v10, v11, v12}
+ v9.ThreeBytes = v13
+ v14 := conformance.StructSize3Align1{}
+ var v15 uint8 = 114
+ var v16 uint8 = 97
+ var v17 uint8 = 116
+ v18 := [3]uint8{v15, v16, v17}
+ v14.ThreeBytes = v18
+ v19 := []conformance.StructSize3Align1{v4, v9, v14}
+ v3.SetVectorS3A1(v19)
+ v1.TheUnion = v3
+ var v20 uint32 = 134678021
+ v1.After = v20
+
+ encodeSuccessCase{
+ name: "Sandwich6Case3",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x73, 0x6f, 0x66, 0x20, 0x6d, 0x69, 0x72, 0x61,
+ 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align1{}
+ var v5 uint8 = 115
+ var v6 uint8 = 111
+ var v7 uint8 = 102
+ v8 := [3]uint8{v5, v6, v7}
+ v4.ThreeBytes = v8
+ v9 := conformance.StructSize3Align1{}
+ var v10 uint8 = 32
+ var v11 uint8 = 109
+ var v12 uint8 = 105
+ v13 := [3]uint8{v10, v11, v12}
+ v9.ThreeBytes = v13
+ v14 := conformance.StructSize3Align1{}
+ var v15 uint8 = 114
+ var v16 uint8 = 97
+ var v17 uint8 = 116
+ v18 := [3]uint8{v15, v16, v17}
+ v14.ThreeBytes = v18
+ v19 := []conformance.StructSize3Align1{v4, v9, v14}
+ v3.SetVectorS3A1(v19)
+ v1.TheUnion = v3
+ var v20 uint32 = 134678021
+ v1.After = v20
+
+ encodeSuccessCase{
+ name: "Sandwich6Case3_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x73, 0x6f, 0x66, 0x20, 0x6d, 0x69, 0x72, 0x61,
+ 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align2{}
+ var v5 uint16 = 28531
+ v4.F1 = v5
+ var v6 uint8 = 102
+ v4.F2 = v6
+ v7 := conformance.StructSize3Align2{}
+ var v8 uint16 = 27936
+ v7.F1 = v8
+ var v9 uint8 = 105
+ v7.F2 = v9
+ v10 := conformance.StructSize3Align2{}
+ var v11 uint16 = 24946
+ v10.F1 = v11
+ var v12 uint8 = 116
+ v10.F2 = v12
+ v13 := []conformance.StructSize3Align2{v4, v7, v10}
+ v3.SetVectorS3A2(v13)
+ v1.TheUnion = v3
+ var v14 uint32 = 134678021
+ v1.After = v14
+
+ encodeSuccessCase{
+ name: "Sandwich6Case4",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x73, 0x6f, 0x66, 0x00, 0x20, 0x6d, 0x69, 0x00,
+ 0x72, 0x61, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align2{}
+ var v5 uint16 = 28531
+ v4.F1 = v5
+ var v6 uint8 = 102
+ v4.F2 = v6
+ v7 := conformance.StructSize3Align2{}
+ var v8 uint16 = 27936
+ v7.F1 = v8
+ var v9 uint8 = 105
+ v7.F2 = v9
+ v10 := conformance.StructSize3Align2{}
+ var v11 uint16 = 24946
+ v10.F1 = v11
+ var v12 uint8 = 116
+ v10.F2 = v12
+ v13 := []conformance.StructSize3Align2{v4, v7, v10}
+ v3.SetVectorS3A2(v13)
+ v1.TheUnion = v3
+ var v14 uint32 = 134678021
+ v1.After = v14
+
+ encodeSuccessCase{
+ name: "Sandwich6Case4_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x73, 0x6f, 0x66, 0x00, 0x20, 0x6d, 0x69, 0x00,
+ 0x72, 0x61, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ var v4 uint32 = 4294967295
+ var v5 uint32 = 4294967295
+ var v6 uint32 = 4294967295
+ v7 := []uint32{v4, v5, v6}
+ v3.SetHandles(v7)
+ v1.TheUnion = v3
+ var v8 uint32 = 134678021
+ v1.After = v8
+
+ encodeSuccessCase{
+ name: "Sandwich6Case5",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ var v4 uint32 = 4294967295
+ var v5 uint32 = 4294967295
+ var v6 uint32 = 4294967295
+ v7 := []uint32{v4, v5, v6}
+ v3.SetHandles(v7)
+ v1.TheUnion = v3
+ var v8 uint32 = 134678021
+ v1.After = v8
+
+ encodeSuccessCase{
+ name: "Sandwich6Case5_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align1{}
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ v8 := [3]uint8{v5, v6, v7}
+ v4.ThreeBytes = v8
+ v9 := conformance.StructSize3Align1{}
+ var v10 uint8 = 164
+ var v11 uint8 = 165
+ var v12 uint8 = 166
+ v13 := [3]uint8{v10, v11, v12}
+ v9.ThreeBytes = v13
+ v14 := [2]conformance.StructSize3Align1{v4, v9}
+ v3.SetArrayS3A1(v14)
+ v1.TheUnion = v3
+ var v15 uint32 = 134678021
+ v1.After = v15
+
+ encodeSuccessCase{
+ name: "Sandwich6Case6",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align1{}
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ v8 := [3]uint8{v5, v6, v7}
+ v4.ThreeBytes = v8
+ v9 := conformance.StructSize3Align1{}
+ var v10 uint8 = 164
+ var v11 uint8 = 165
+ var v12 uint8 = 166
+ v13 := [3]uint8{v10, v11, v12}
+ v9.ThreeBytes = v13
+ v14 := [2]conformance.StructSize3Align1{v4, v9}
+ v3.SetArrayS3A1(v14)
+ v1.TheUnion = v3
+ var v15 uint32 = 134678021
+ v1.After = v15
+
+ encodeSuccessCase{
+ name: "Sandwich6Case6_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align2{}
+ var v5 uint16 = 41633
+ v4.F1 = v5
+ var v6 uint8 = 163
+ v4.F2 = v6
+ v7 := conformance.StructSize3Align2{}
+ var v8 uint16 = 42404
+ v7.F1 = v8
+ var v9 uint8 = 166
+ v7.F2 = v9
+ v10 := [2]conformance.StructSize3Align2{v4, v7}
+ v3.SetArrayS3A2(v10)
+ v1.TheUnion = v3
+ var v11 uint32 = 134678021
+ v1.After = v11
+
+ encodeSuccessCase{
+ name: "Sandwich6Case7",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa1, 0xa2, 0xa3, 0x00, 0xa4, 0xa5, 0xa6, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align2{}
+ var v5 uint16 = 41633
+ v4.F1 = v5
+ var v6 uint8 = 163
+ v4.F2 = v6
+ v7 := conformance.StructSize3Align2{}
+ var v8 uint16 = 42404
+ v7.F1 = v8
+ var v9 uint8 = 166
+ v7.F2 = v9
+ v10 := [2]conformance.StructSize3Align2{v4, v7}
+ v3.SetArrayS3A2(v10)
+ v1.TheUnion = v3
+ var v11 uint32 = 134678021
+ v1.After = v11
+
+ encodeSuccessCase{
+ name: "Sandwich6Case7_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa1, 0xa2, 0xa3, 0x00, 0xa4, 0xa5, 0xa6, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.UnionSize8Align4{}
+ var v5 uint32 = 202050057
+ v4.SetVariant(v5)
+ v6 := []conformance.UnionSize8Align4{v4}
+ v3.SetVectorUnion(v6)
+ v1.TheUnion = v3
+ var v7 uint32 = 134678021
+ v1.After = v7
+
+ encodeSuccessCase{
+ name: "Sandwich6Case8",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x09, 0x0a, 0x0b, 0x0c,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.UnionSize8Align4{}
+ var v5 uint32 = 202050057
+ v4.SetVariant(v5)
+ v6 := []conformance.UnionSize8Align4{v4}
+ v3.SetVectorUnion(v6)
+ v1.TheUnion = v3
+ var v7 uint32 = 134678021
+ v1.After = v7
+
+ encodeSuccessCase{
+ name: "Sandwich6Case8_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x09, 0x0a, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableStructWithReservedSandwichStruct{}
+ v2 := conformance.TableStructWithReservedSandwich{}
+ v3 := conformance.StructSize3Align1{}
+ var v4 uint8 = 9
+ var v5 uint8 = 10
+ var v6 uint8 = 11
+ v7 := [3]uint8{v4, v5, v6}
+ v3.ThreeBytes = v7
+ v2.SetS1(v3)
+ v8 := conformance.StructSize3Align1{}
+ var v9 uint8 = 25
+ var v10 uint8 = 26
+ var v11 uint8 = 27
+ v12 := [3]uint8{v9, v10, v11}
+ v8.ThreeBytes = v12
+ v2.SetS2(v8)
+ v1.Table = v2
+
+ encodeSuccessCase{
+ name: "Table_StructWithReservedSandwich",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x09, 0x0a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x19, 0x1a, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableStructWithReservedSandwichStruct{}
+ v2 := conformance.TableStructWithReservedSandwich{}
+ v3 := conformance.StructSize3Align1{}
+ var v4 uint8 = 9
+ var v5 uint8 = 10
+ var v6 uint8 = 11
+ v7 := [3]uint8{v4, v5, v6}
+ v3.ThreeBytes = v7
+ v2.SetS1(v3)
+ v8 := conformance.StructSize3Align1{}
+ var v9 uint8 = 25
+ var v10 uint8 = 26
+ var v11 uint8 = 27
+ v12 := [3]uint8{v9, v10, v11}
+ v8.ThreeBytes = v12
+ v2.SetS2(v8)
+ v1.Table = v2
+
+ encodeSuccessCase{
+ name: "Table_StructWithReservedSandwich_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x09, 0x0a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x19, 0x1a, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableStructWithUint32SandwichStruct{}
+ v2 := conformance.TableStructWithUint32Sandwich{}
+ var v3 uint32 = 67305985
+ v2.SetI(v3)
+ v4 := conformance.StructSize3Align1{}
+ var v5 uint8 = 9
+ var v6 uint8 = 10
+ var v7 uint8 = 11
+ v8 := [3]uint8{v5, v6, v7}
+ v4.ThreeBytes = v8
+ v2.SetS1(v4)
+ v9 := conformance.StructSize3Align1{}
+ var v10 uint8 = 25
+ var v11 uint8 = 26
+ var v12 uint8 = 27
+ v13 := [3]uint8{v10, v11, v12}
+ v9.ThreeBytes = v13
+ v2.SetS2(v9)
+ var v14 uint32 = 218893066
+ v2.SetI2(v14)
+ v1.Table = v2
+
+ encodeSuccessCase{
+ name: "Table_StructWithUint32Sandwich",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x09, 0x0a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x19, 0x1a, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0a, 0x0b, 0x0c, 0x0d, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableStructWithUint32SandwichStruct{}
+ v2 := conformance.TableStructWithUint32Sandwich{}
+ var v3 uint32 = 67305985
+ v2.SetI(v3)
+ v4 := conformance.StructSize3Align1{}
+ var v5 uint8 = 9
+ var v6 uint8 = 10
+ var v7 uint8 = 11
+ v8 := [3]uint8{v5, v6, v7}
+ v4.ThreeBytes = v8
+ v2.SetS1(v4)
+ v9 := conformance.StructSize3Align1{}
+ var v10 uint8 = 25
+ var v11 uint8 = 26
+ var v12 uint8 = 27
+ v13 := [3]uint8{v10, v11, v12}
+ v9.ThreeBytes = v13
+ v2.SetS2(v9)
+ var v14 uint32 = 218893066
+ v2.SetI2(v14)
+ v1.Table = v2
+
+ encodeSuccessCase{
+ name: "Table_StructWithUint32Sandwich_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x09, 0x0a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x19, 0x1a, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0a, 0x0b, 0x0c, 0x0d, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableUnionWithVectorReservedSandwichStruct{}
+ v2 := conformance.TableUnionWithVectorReservedSandwich{}
+ v3 := conformance.UnionWithVector{}
+ v4 := "hello"
+ v3.SetString(v4)
+ v2.SetUv(v3)
+ v1.Table = v2
+
+ encodeSuccessCase{
+ name: "Table_UnionWithVector_ReservedSandwich",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableUnionWithVectorReservedSandwichStruct{}
+ v2 := conformance.TableUnionWithVectorReservedSandwich{}
+ v3 := conformance.UnionWithVector{}
+ v4 := "hello"
+ v3.SetString(v4)
+ v2.SetUv(v3)
+ v1.Table = v2
+
+ encodeSuccessCase{
+ name: "Table_UnionWithVector_ReservedSandwich_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableUnionWithVectorStructSandwichStruct{}
+ v2 := conformance.TableUnionWithVectorStructSandwich{}
+ v3 := conformance.StructSize3Align1{}
+ var v4 uint8 = 1
+ var v5 uint8 = 2
+ var v6 uint8 = 3
+ v7 := [3]uint8{v4, v5, v6}
+ v3.ThreeBytes = v7
+ v2.SetS1(v3)
+ v8 := conformance.UnionWithVector{}
+ v9 := "hello"
+ v8.SetString(v9)
+ v2.SetUv(v8)
+ v10 := conformance.StructSize3Align1{}
+ var v11 uint8 = 4
+ var v12 uint8 = 5
+ var v13 uint8 = 6
+ v14 := [3]uint8{v11, v12, v13}
+ v10.ThreeBytes = v14
+ v2.SetS2(v10)
+ v1.Table = v2
+
+ encodeSuccessCase{
+ name: "Table_UnionWithVector_StructSandwich",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x00, 0x00, 0x00,
+ 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableUnionWithVectorStructSandwichStruct{}
+ v2 := conformance.TableUnionWithVectorStructSandwich{}
+ v3 := conformance.StructSize3Align1{}
+ var v4 uint8 = 1
+ var v5 uint8 = 2
+ var v6 uint8 = 3
+ v7 := [3]uint8{v4, v5, v6}
+ v3.ThreeBytes = v7
+ v2.SetS1(v3)
+ v8 := conformance.UnionWithVector{}
+ v9 := "hello"
+ v8.SetString(v9)
+ v2.SetUv(v8)
+ v10 := conformance.StructSize3Align1{}
+ var v11 uint8 = 4
+ var v12 uint8 = 5
+ var v13 uint8 = 6
+ v14 := [3]uint8{v11, v12, v13}
+ v10.ThreeBytes = v14
+ v2.SetS2(v10)
+ v1.Table = v2
+
+ encodeSuccessCase{
+ name: "Table_UnionWithVector_StructSandwich_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x00, 0x00, 0x00,
+ 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.XUnionWithStructStruct{}
+ v2 := conformance.XUnionWithStruct{}
+ v3 := conformance.StructSize3Align1{}
+ var v4 uint8 = 1
+ var v5 uint8 = 2
+ var v6 uint8 = 3
+ v7 := [3]uint8{v4, v5, v6}
+ v3.ThreeBytes = v7
+ v2.SetS(v3)
+ v1.Xu = v2
+
+ encodeSuccessCase{
+ name: "XUnionWithStruct",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x14, 0x5c, 0x3e, 0x19, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.XUnionWithStructStruct{}
+ v2 := conformance.XUnionWithStruct{}
+ v3 := conformance.StructSize3Align1{}
+ var v4 uint8 = 1
+ var v5 uint8 = 2
+ var v6 uint8 = 3
+ v7 := [3]uint8{v4, v5, v6}
+ v3.ThreeBytes = v7
+ v2.SetS(v3)
+ v1.Xu = v2
+
+ encodeSuccessCase{
+ name: "XUnionWithStruct_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x14, 0x5c, 0x3e, 0x19, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.ArrayStruct{}
+ v2 := conformance.StringUnion{}
+ v3 := "one"
+ v2.SetS(v3)
+ v4 := conformance.StringUnion{}
+ v5 := "two"
+ v4.SetS(v5)
+ v6 := conformance.StringUnion{}
+ v7 := "three"
+ v6.SetS(v7)
+ v8 := [3]conformance.StringUnion{v2, v4, v6}
+ v1.Unions = v8
+ v9 := &conformance.StringUnion{}
+ v10 := "four"
+ v9.SetS(v10)
+ v11 := &conformance.StringUnion{}
+ v12 := "five"
+ v11.SetS(v12)
+ v13 := &conformance.StringUnion{}
+ v14 := "six"
+ v13.SetS(v14)
+ v15 := [3]*conformance.StringUnion{v9, v11, v13}
+ v1.OptionalUnions = v15
+
+ encodeSuccessCase{
+ name: "ArrayStruct",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x6f, 0x6e, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x74, 0x77, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x74, 0x68, 0x72, 0x65, 0x65, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x66, 0x6f, 0x75, 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x66, 0x69, 0x76, 0x65, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x73, 0x69, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.ArrayStruct{}
+ v2 := conformance.StringUnion{}
+ v3 := "one"
+ v2.SetS(v3)
+ v4 := conformance.StringUnion{}
+ v5 := "two"
+ v4.SetS(v5)
+ v6 := conformance.StringUnion{}
+ v7 := "three"
+ v6.SetS(v7)
+ v8 := [3]conformance.StringUnion{v2, v4, v6}
+ v1.Unions = v8
+ v9 := &conformance.StringUnion{}
+ v10 := "four"
+ v9.SetS(v10)
+ v11 := &conformance.StringUnion{}
+ v12 := "five"
+ v11.SetS(v12)
+ v13 := &conformance.StringUnion{}
+ v14 := "six"
+ v13.SetS(v14)
+ v15 := [3]*conformance.StringUnion{v9, v11, v13}
+ v1.OptionalUnions = v15
+
+ encodeSuccessCase{
+ name: "ArrayStruct_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x6f, 0x6e, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x74, 0x77, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x74, 0x68, 0x72, 0x65, 0x65, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x66, 0x6f, 0x75, 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x66, 0x69, 0x76, 0x65, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x73, 0x69, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression1{}
+ var v2 uint8 = 1
+ v1.F1 = v2
+ var v3 uint32 = 2
+ v1.F2 = v3
+ var v4 uint8 = 3
+ v1.F3 = v4
+ var v5 uint16 = 4
+ v1.F4 = v5
+ var v6 uint64 = 5
+ v1.F5 = v6
+ var v7 uint8 = 6
+ v1.F6 = v7
+
+ encodeSuccessCase{
+ name: "Regression1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression1{}
+ var v2 uint8 = 1
+ v1.F1 = v2
+ var v3 uint32 = 2
+ v1.F2 = v3
+ var v4 uint8 = 3
+ v1.F3 = v4
+ var v5 uint16 = 4
+ v1.F4 = v5
+ var v6 uint64 = 5
+ v1.F5 = v6
+ var v7 uint8 = 6
+ v1.F6 = v7
+
+ encodeSuccessCase{
+ name: "Regression1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression2{}
+ v2 := conformance.Regression1{}
+ var v3 uint8 = 1
+ v2.F1 = v3
+ var v4 uint32 = 2
+ v2.F2 = v4
+ var v5 uint8 = 3
+ v2.F3 = v5
+ var v6 uint16 = 4
+ v2.F4 = v6
+ var v7 uint64 = 5
+ v2.F5 = v7
+ var v8 uint8 = 6
+ v2.F6 = v8
+ v1.Head = v2
+ var v9 uint8 = 7
+ v1.F7 = v9
+
+ encodeSuccessCase{
+ name: "Regression2",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression2{}
+ v2 := conformance.Regression1{}
+ var v3 uint8 = 1
+ v2.F1 = v3
+ var v4 uint32 = 2
+ v2.F2 = v4
+ var v5 uint8 = 3
+ v2.F3 = v5
+ var v6 uint16 = 4
+ v2.F4 = v6
+ var v7 uint64 = 5
+ v2.F5 = v7
+ var v8 uint8 = 6
+ v2.F6 = v8
+ v1.Head = v2
+ var v9 uint8 = 7
+ v1.F7 = v9
+
+ encodeSuccessCase{
+ name: "Regression2_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression3{}
+
+ encodeSuccessCase{
+ name: "Regression3Absent",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression3{}
+
+ encodeSuccessCase{
+ name: "Regression3Absent_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression3{}
+ v2 := &conformance.Regression2{}
+ v3 := conformance.Regression1{}
+ var v4 uint8 = 1
+ v3.F1 = v4
+ var v5 uint32 = 2
+ v3.F2 = v5
+ var v6 uint8 = 3
+ v3.F3 = v6
+ var v7 uint16 = 4
+ v3.F4 = v7
+ var v8 uint64 = 5
+ v3.F5 = v8
+ var v9 uint8 = 6
+ v3.F6 = v9
+ v2.Head = v3
+ var v10 uint8 = 7
+ v2.F7 = v10
+ v1.OptValue = v2
+
+ encodeSuccessCase{
+ name: "Regression3Present",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression3{}
+ v2 := &conformance.Regression2{}
+ v3 := conformance.Regression1{}
+ var v4 uint8 = 1
+ v3.F1 = v4
+ var v5 uint32 = 2
+ v3.F2 = v5
+ var v6 uint8 = 3
+ v3.F3 = v6
+ var v7 uint16 = 4
+ v3.F4 = v7
+ var v8 uint64 = 5
+ v3.F5 = v8
+ var v9 uint8 = 6
+ v3.F6 = v9
+ v2.Head = v3
+ var v10 uint8 = 7
+ v2.F7 = v10
+ v1.OptValue = v2
+
+ encodeSuccessCase{
+ name: "Regression3Present_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
v1 := conformance.UnionWithBoundStringStruct{}
v2 := conformance.UnionWithBoundString{}
v3 := "abcd"
@@ -3510,6 +5421,1917 @@
}
{
+ v1 := conformance.Sandwich1{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize8Align4{}
+ var v4 uint32 = 202050057
+ v3.SetVariant(v4)
+ v1.TheUnion = v3
+ var v5 uint32 = 134678021
+ v1.After = v5
+
+ decodeSuccessCase{
+ name: "Sandwich1Case1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x02, 0x00, 0x00, 0x00,
+ 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x07, 0x08,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich1{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize8Align4{}
+ var v4 uint32 = 202050057
+ v3.SetVariant(v4)
+ v1.TheUnion = v3
+ var v5 uint32 = 134678021
+ v1.After = v5
+
+ decodeSuccessCase{
+ name: "Sandwich1Case1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x09, 0x0a, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich2{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize12Align4{}
+ var v4 uint8 = 160
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ var v8 uint8 = 164
+ var v9 uint8 = 165
+ v10 := [6]uint8{v4, v5, v6, v7, v8, v9}
+ v3.SetVariant(v10)
+ v1.TheUnion = v3
+ var v11 uint32 = 134678021
+ v1.After = v11
+
+ decodeSuccessCase{
+ name: "Sandwich2Case1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x03, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich2{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize12Align4{}
+ var v4 uint8 = 160
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ var v8 uint8 = 164
+ var v9 uint8 = 165
+ v10 := [6]uint8{v4, v5, v6, v7, v8, v9}
+ v3.SetVariant(v10)
+ v1.TheUnion = v3
+ var v11 uint32 = 134678021
+ v1.After = v11
+
+ decodeSuccessCase{
+ name: "Sandwich2Case1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich3{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize24Align8{}
+ v4 := conformance.StructSize16Align8{}
+ var v5 uint64 = 12080525177006498208
+ v4.F1 = v5
+ var v6 uint64 = 12659246559711111592
+ v4.F2 = v6
+ v3.SetVariant(v4)
+ v1.TheUnion = v3
+ var v7 uint32 = 134678021
+ v1.After = v7
+
+ decodeSuccessCase{
+ name: "Sandwich3Case1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich3{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize24Align8{}
+ v4 := conformance.StructSize16Align8{}
+ var v5 uint64 = 12080525177006498208
+ v4.F1 = v5
+ var v6 uint64 = 12659246559711111592
+ v4.F2 = v6
+ v3.SetVariant(v4)
+ v1.TheUnion = v3
+ var v7 uint32 = 134678021
+ v1.After = v7
+
+ decodeSuccessCase{
+ name: "Sandwich3Case1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich4{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize36Align4{}
+ var v4 uint8 = 160
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ var v8 uint8 = 164
+ var v9 uint8 = 165
+ var v10 uint8 = 166
+ var v11 uint8 = 167
+ var v12 uint8 = 168
+ var v13 uint8 = 169
+ var v14 uint8 = 170
+ var v15 uint8 = 171
+ var v16 uint8 = 172
+ var v17 uint8 = 173
+ var v18 uint8 = 174
+ var v19 uint8 = 175
+ var v20 uint8 = 176
+ var v21 uint8 = 177
+ var v22 uint8 = 178
+ var v23 uint8 = 179
+ var v24 uint8 = 180
+ var v25 uint8 = 181
+ var v26 uint8 = 182
+ var v27 uint8 = 183
+ var v28 uint8 = 184
+ var v29 uint8 = 185
+ var v30 uint8 = 186
+ var v31 uint8 = 187
+ var v32 uint8 = 188
+ var v33 uint8 = 189
+ var v34 uint8 = 190
+ var v35 uint8 = 191
+ v36 := [32]uint8{v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35}
+ v3.SetVariant(v36)
+ v1.TheUnion = v3
+ var v37 uint32 = 134678021
+ v1.After = v37
+
+ decodeSuccessCase{
+ name: "Sandwich4Case1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x03, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich4{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionSize36Align4{}
+ var v4 uint8 = 160
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ var v8 uint8 = 164
+ var v9 uint8 = 165
+ var v10 uint8 = 166
+ var v11 uint8 = 167
+ var v12 uint8 = 168
+ var v13 uint8 = 169
+ var v14 uint8 = 170
+ var v15 uint8 = 171
+ var v16 uint8 = 172
+ var v17 uint8 = 173
+ var v18 uint8 = 174
+ var v19 uint8 = 175
+ var v20 uint8 = 176
+ var v21 uint8 = 177
+ var v22 uint8 = 178
+ var v23 uint8 = 179
+ var v24 uint8 = 180
+ var v25 uint8 = 181
+ var v26 uint8 = 182
+ var v27 uint8 = 183
+ var v28 uint8 = 184
+ var v29 uint8 = 185
+ var v30 uint8 = 186
+ var v31 uint8 = 187
+ var v32 uint8 = 188
+ var v33 uint8 = 189
+ var v34 uint8 = 190
+ var v35 uint8 = 191
+ v36 := [32]uint8{v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35}
+ v3.SetVariant(v36)
+ v1.TheUnion = v3
+ var v37 uint32 = 134678021
+ v1.After = v37
+
+ decodeSuccessCase{
+ name: "Sandwich4Case1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich5{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionOfUnion{}
+ v4 := conformance.UnionSize8Align4{}
+ var v5 uint32 = 202050057
+ v4.SetVariant(v5)
+ v3.SetSize8align4(v4)
+ v1.UnionOfUnion = v3
+ var v6 uint32 = 134678021
+ v1.After = v6
+
+ decodeSuccessCase{
+ name: "Sandwich5Case1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x09, 0x0a, 0x0b, 0x0c,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich5{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionOfUnion{}
+ v4 := conformance.UnionSize8Align4{}
+ var v5 uint32 = 202050057
+ v4.SetVariant(v5)
+ v3.SetSize8align4(v4)
+ v1.UnionOfUnion = v3
+ var v6 uint32 = 134678021
+ v1.After = v6
+
+ decodeSuccessCase{
+ name: "Sandwich5Case1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x09, 0x0a, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich5{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionOfUnion{}
+ v4 := conformance.UnionSize24Align8{}
+ v5 := conformance.StructSize16Align8{}
+ var v6 uint64 = 12080525177006498208
+ v5.F1 = v6
+ var v7 uint64 = 12659246559711111592
+ v5.F2 = v7
+ v4.SetVariant(v5)
+ v3.SetSize24align8(v4)
+ v1.UnionOfUnion = v3
+ var v8 uint32 = 134678021
+ v1.After = v8
+
+ decodeSuccessCase{
+ name: "Sandwich5Case2",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich5{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionOfUnion{}
+ v4 := conformance.UnionSize24Align8{}
+ v5 := conformance.StructSize16Align8{}
+ var v6 uint64 = 12080525177006498208
+ v5.F1 = v6
+ var v7 uint64 = 12659246559711111592
+ v5.F2 = v7
+ v4.SetVariant(v5)
+ v3.SetSize24align8(v4)
+ v1.UnionOfUnion = v3
+ var v8 uint32 = 134678021
+ v1.After = v8
+
+ decodeSuccessCase{
+ name: "Sandwich5Case2_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ var v4 uint8 = 160
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ var v8 uint8 = 164
+ var v9 uint8 = 165
+ v10 := []uint8{v4, v5, v6, v7, v8, v9}
+ v3.SetVectorOfUint8(v10)
+ v1.TheUnion = v3
+ var v11 uint32 = 134678021
+ v1.After = v11
+
+ decodeSuccessCase{
+ name: "Sandwich6Case1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ var v4 uint8 = 160
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ var v8 uint8 = 164
+ var v9 uint8 = 165
+ v10 := []uint8{v4, v5, v6, v7, v8, v9}
+ v3.SetVectorOfUint8(v10)
+ v1.TheUnion = v3
+ var v11 uint32 = 134678021
+ v1.After = v11
+
+ decodeSuccessCase{
+ name: "Sandwich6Case1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := []uint8{}
+ v3.SetVectorOfUint8(v4)
+ v1.TheUnion = v3
+ var v5 uint32 = 134678021
+ v1.After = v5
+
+ decodeSuccessCase{
+ name: "Sandwich6Case1AbsentVector",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := []uint8{}
+ v3.SetVectorOfUint8(v4)
+ v1.TheUnion = v3
+ var v5 uint32 = 134678021
+ v1.After = v5
+
+ decodeSuccessCase{
+ name: "Sandwich6Case1AbsentVector_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := "soft migrations rock!"
+ v3.SetString(v4)
+ v1.TheUnion = v3
+ var v5 uint32 = 134678021
+ v1.After = v5
+
+ decodeSuccessCase{
+ name: "Sandwich6Case2",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x73, 0x6f, 0x66, 0x74, 0x20, 0x6d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20,
+ 0x72, 0x6f, 0x63, 0x6b, 0x21, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := "soft migrations rock!"
+ v3.SetString(v4)
+ v1.TheUnion = v3
+ var v5 uint32 = 134678021
+ v1.After = v5
+
+ decodeSuccessCase{
+ name: "Sandwich6Case2_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x73, 0x6f, 0x66, 0x74, 0x20, 0x6d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20,
+ 0x72, 0x6f, 0x63, 0x6b, 0x21, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align1{}
+ var v5 uint8 = 115
+ var v6 uint8 = 111
+ var v7 uint8 = 102
+ v8 := [3]uint8{v5, v6, v7}
+ v4.ThreeBytes = v8
+ v9 := conformance.StructSize3Align1{}
+ var v10 uint8 = 32
+ var v11 uint8 = 109
+ var v12 uint8 = 105
+ v13 := [3]uint8{v10, v11, v12}
+ v9.ThreeBytes = v13
+ v14 := conformance.StructSize3Align1{}
+ var v15 uint8 = 114
+ var v16 uint8 = 97
+ var v17 uint8 = 116
+ v18 := [3]uint8{v15, v16, v17}
+ v14.ThreeBytes = v18
+ v19 := []conformance.StructSize3Align1{v4, v9, v14}
+ v3.SetVectorS3A1(v19)
+ v1.TheUnion = v3
+ var v20 uint32 = 134678021
+ v1.After = v20
+
+ decodeSuccessCase{
+ name: "Sandwich6Case3",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x73, 0x6f, 0x66, 0x20, 0x6d, 0x69, 0x72, 0x61,
+ 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align1{}
+ var v5 uint8 = 115
+ var v6 uint8 = 111
+ var v7 uint8 = 102
+ v8 := [3]uint8{v5, v6, v7}
+ v4.ThreeBytes = v8
+ v9 := conformance.StructSize3Align1{}
+ var v10 uint8 = 32
+ var v11 uint8 = 109
+ var v12 uint8 = 105
+ v13 := [3]uint8{v10, v11, v12}
+ v9.ThreeBytes = v13
+ v14 := conformance.StructSize3Align1{}
+ var v15 uint8 = 114
+ var v16 uint8 = 97
+ var v17 uint8 = 116
+ v18 := [3]uint8{v15, v16, v17}
+ v14.ThreeBytes = v18
+ v19 := []conformance.StructSize3Align1{v4, v9, v14}
+ v3.SetVectorS3A1(v19)
+ v1.TheUnion = v3
+ var v20 uint32 = 134678021
+ v1.After = v20
+
+ decodeSuccessCase{
+ name: "Sandwich6Case3_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x73, 0x6f, 0x66, 0x20, 0x6d, 0x69, 0x72, 0x61,
+ 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align2{}
+ var v5 uint16 = 28531
+ v4.F1 = v5
+ var v6 uint8 = 102
+ v4.F2 = v6
+ v7 := conformance.StructSize3Align2{}
+ var v8 uint16 = 27936
+ v7.F1 = v8
+ var v9 uint8 = 105
+ v7.F2 = v9
+ v10 := conformance.StructSize3Align2{}
+ var v11 uint16 = 24946
+ v10.F1 = v11
+ var v12 uint8 = 116
+ v10.F2 = v12
+ v13 := []conformance.StructSize3Align2{v4, v7, v10}
+ v3.SetVectorS3A2(v13)
+ v1.TheUnion = v3
+ var v14 uint32 = 134678021
+ v1.After = v14
+
+ decodeSuccessCase{
+ name: "Sandwich6Case4",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x73, 0x6f, 0x66, 0x00, 0x20, 0x6d, 0x69, 0x00,
+ 0x72, 0x61, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align2{}
+ var v5 uint16 = 28531
+ v4.F1 = v5
+ var v6 uint8 = 102
+ v4.F2 = v6
+ v7 := conformance.StructSize3Align2{}
+ var v8 uint16 = 27936
+ v7.F1 = v8
+ var v9 uint8 = 105
+ v7.F2 = v9
+ v10 := conformance.StructSize3Align2{}
+ var v11 uint16 = 24946
+ v10.F1 = v11
+ var v12 uint8 = 116
+ v10.F2 = v12
+ v13 := []conformance.StructSize3Align2{v4, v7, v10}
+ v3.SetVectorS3A2(v13)
+ v1.TheUnion = v3
+ var v14 uint32 = 134678021
+ v1.After = v14
+
+ decodeSuccessCase{
+ name: "Sandwich6Case4_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x73, 0x6f, 0x66, 0x00, 0x20, 0x6d, 0x69, 0x00,
+ 0x72, 0x61, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ var v4 uint32 = 4294967295
+ var v5 uint32 = 4294967295
+ var v6 uint32 = 4294967295
+ v7 := []uint32{v4, v5, v6}
+ v3.SetHandles(v7)
+ v1.TheUnion = v3
+ var v8 uint32 = 134678021
+ v1.After = v8
+
+ decodeSuccessCase{
+ name: "Sandwich6Case5",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ var v4 uint32 = 4294967295
+ var v5 uint32 = 4294967295
+ var v6 uint32 = 4294967295
+ v7 := []uint32{v4, v5, v6}
+ v3.SetHandles(v7)
+ v1.TheUnion = v3
+ var v8 uint32 = 134678021
+ v1.After = v8
+
+ decodeSuccessCase{
+ name: "Sandwich6Case5_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align1{}
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ v8 := [3]uint8{v5, v6, v7}
+ v4.ThreeBytes = v8
+ v9 := conformance.StructSize3Align1{}
+ var v10 uint8 = 164
+ var v11 uint8 = 165
+ var v12 uint8 = 166
+ v13 := [3]uint8{v10, v11, v12}
+ v9.ThreeBytes = v13
+ v14 := [2]conformance.StructSize3Align1{v4, v9}
+ v3.SetArrayS3A1(v14)
+ v1.TheUnion = v3
+ var v15 uint32 = 134678021
+ v1.After = v15
+
+ decodeSuccessCase{
+ name: "Sandwich6Case6",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align1{}
+ var v5 uint8 = 161
+ var v6 uint8 = 162
+ var v7 uint8 = 163
+ v8 := [3]uint8{v5, v6, v7}
+ v4.ThreeBytes = v8
+ v9 := conformance.StructSize3Align1{}
+ var v10 uint8 = 164
+ var v11 uint8 = 165
+ var v12 uint8 = 166
+ v13 := [3]uint8{v10, v11, v12}
+ v9.ThreeBytes = v13
+ v14 := [2]conformance.StructSize3Align1{v4, v9}
+ v3.SetArrayS3A1(v14)
+ v1.TheUnion = v3
+ var v15 uint32 = 134678021
+ v1.After = v15
+
+ decodeSuccessCase{
+ name: "Sandwich6Case6_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align2{}
+ var v5 uint16 = 41633
+ v4.F1 = v5
+ var v6 uint8 = 163
+ v4.F2 = v6
+ v7 := conformance.StructSize3Align2{}
+ var v8 uint16 = 42404
+ v7.F1 = v8
+ var v9 uint8 = 166
+ v7.F2 = v9
+ v10 := [2]conformance.StructSize3Align2{v4, v7}
+ v3.SetArrayS3A2(v10)
+ v1.TheUnion = v3
+ var v11 uint32 = 134678021
+ v1.After = v11
+
+ decodeSuccessCase{
+ name: "Sandwich6Case7",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa1, 0xa2, 0xa3, 0x00, 0xa4, 0xa5, 0xa6, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.StructSize3Align2{}
+ var v5 uint16 = 41633
+ v4.F1 = v5
+ var v6 uint8 = 163
+ v4.F2 = v6
+ v7 := conformance.StructSize3Align2{}
+ var v8 uint16 = 42404
+ v7.F1 = v8
+ var v9 uint8 = 166
+ v7.F2 = v9
+ v10 := [2]conformance.StructSize3Align2{v4, v7}
+ v3.SetArrayS3A2(v10)
+ v1.TheUnion = v3
+ var v11 uint32 = 134678021
+ v1.After = v11
+
+ decodeSuccessCase{
+ name: "Sandwich6Case7_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa1, 0xa2, 0xa3, 0x00, 0xa4, 0xa5, 0xa6, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.UnionSize8Align4{}
+ var v5 uint32 = 202050057
+ v4.SetVariant(v5)
+ v6 := []conformance.UnionSize8Align4{v4}
+ v3.SetVectorUnion(v6)
+ v1.TheUnion = v3
+ var v7 uint32 = 134678021
+ v1.After = v7
+
+ decodeSuccessCase{
+ name: "Sandwich6Case8",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x09, 0x0a, 0x0b, 0x0c,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Sandwich6{}
+ var v2 uint32 = 67305985
+ v1.Before = v2
+ v3 := conformance.UnionWithVector{}
+ v4 := conformance.UnionSize8Align4{}
+ var v5 uint32 = 202050057
+ v4.SetVariant(v5)
+ v6 := []conformance.UnionSize8Align4{v4}
+ v3.SetVectorUnion(v6)
+ v1.TheUnion = v3
+ var v7 uint32 = 134678021
+ v1.After = v7
+
+ decodeSuccessCase{
+ name: "Sandwich6Case8_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x09, 0x0a, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableStructWithReservedSandwichStruct{}
+ v2 := conformance.TableStructWithReservedSandwich{}
+ v3 := conformance.StructSize3Align1{}
+ var v4 uint8 = 9
+ var v5 uint8 = 10
+ var v6 uint8 = 11
+ v7 := [3]uint8{v4, v5, v6}
+ v3.ThreeBytes = v7
+ v2.SetS1(v3)
+ v8 := conformance.StructSize3Align1{}
+ var v9 uint8 = 25
+ var v10 uint8 = 26
+ var v11 uint8 = 27
+ v12 := [3]uint8{v9, v10, v11}
+ v8.ThreeBytes = v12
+ v2.SetS2(v8)
+ v1.Table = v2
+
+ decodeSuccessCase{
+ name: "Table_StructWithReservedSandwich",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x09, 0x0a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x19, 0x1a, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableStructWithReservedSandwichStruct{}
+ v2 := conformance.TableStructWithReservedSandwich{}
+ v3 := conformance.StructSize3Align1{}
+ var v4 uint8 = 9
+ var v5 uint8 = 10
+ var v6 uint8 = 11
+ v7 := [3]uint8{v4, v5, v6}
+ v3.ThreeBytes = v7
+ v2.SetS1(v3)
+ v8 := conformance.StructSize3Align1{}
+ var v9 uint8 = 25
+ var v10 uint8 = 26
+ var v11 uint8 = 27
+ v12 := [3]uint8{v9, v10, v11}
+ v8.ThreeBytes = v12
+ v2.SetS2(v8)
+ v1.Table = v2
+
+ decodeSuccessCase{
+ name: "Table_StructWithReservedSandwich_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x09, 0x0a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x19, 0x1a, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableStructWithUint32SandwichStruct{}
+ v2 := conformance.TableStructWithUint32Sandwich{}
+ var v3 uint32 = 67305985
+ v2.SetI(v3)
+ v4 := conformance.StructSize3Align1{}
+ var v5 uint8 = 9
+ var v6 uint8 = 10
+ var v7 uint8 = 11
+ v8 := [3]uint8{v5, v6, v7}
+ v4.ThreeBytes = v8
+ v2.SetS1(v4)
+ v9 := conformance.StructSize3Align1{}
+ var v10 uint8 = 25
+ var v11 uint8 = 26
+ var v12 uint8 = 27
+ v13 := [3]uint8{v10, v11, v12}
+ v9.ThreeBytes = v13
+ v2.SetS2(v9)
+ var v14 uint32 = 218893066
+ v2.SetI2(v14)
+ v1.Table = v2
+
+ decodeSuccessCase{
+ name: "Table_StructWithUint32Sandwich",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x09, 0x0a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x19, 0x1a, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0a, 0x0b, 0x0c, 0x0d, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableStructWithUint32SandwichStruct{}
+ v2 := conformance.TableStructWithUint32Sandwich{}
+ var v3 uint32 = 67305985
+ v2.SetI(v3)
+ v4 := conformance.StructSize3Align1{}
+ var v5 uint8 = 9
+ var v6 uint8 = 10
+ var v7 uint8 = 11
+ v8 := [3]uint8{v5, v6, v7}
+ v4.ThreeBytes = v8
+ v2.SetS1(v4)
+ v9 := conformance.StructSize3Align1{}
+ var v10 uint8 = 25
+ var v11 uint8 = 26
+ var v12 uint8 = 27
+ v13 := [3]uint8{v10, v11, v12}
+ v9.ThreeBytes = v13
+ v2.SetS2(v9)
+ var v14 uint32 = 218893066
+ v2.SetI2(v14)
+ v1.Table = v2
+
+ decodeSuccessCase{
+ name: "Table_StructWithUint32Sandwich_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x09, 0x0a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x19, 0x1a, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0a, 0x0b, 0x0c, 0x0d, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableUnionWithVectorReservedSandwichStruct{}
+ v2 := conformance.TableUnionWithVectorReservedSandwich{}
+ v3 := conformance.UnionWithVector{}
+ v4 := "hello"
+ v3.SetString(v4)
+ v2.SetUv(v3)
+ v1.Table = v2
+
+ decodeSuccessCase{
+ name: "Table_UnionWithVector_ReservedSandwich",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableUnionWithVectorReservedSandwichStruct{}
+ v2 := conformance.TableUnionWithVectorReservedSandwich{}
+ v3 := conformance.UnionWithVector{}
+ v4 := "hello"
+ v3.SetString(v4)
+ v2.SetUv(v3)
+ v1.Table = v2
+
+ decodeSuccessCase{
+ name: "Table_UnionWithVector_ReservedSandwich_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableUnionWithVectorStructSandwichStruct{}
+ v2 := conformance.TableUnionWithVectorStructSandwich{}
+ v3 := conformance.StructSize3Align1{}
+ var v4 uint8 = 1
+ var v5 uint8 = 2
+ var v6 uint8 = 3
+ v7 := [3]uint8{v4, v5, v6}
+ v3.ThreeBytes = v7
+ v2.SetS1(v3)
+ v8 := conformance.UnionWithVector{}
+ v9 := "hello"
+ v8.SetString(v9)
+ v2.SetUv(v8)
+ v10 := conformance.StructSize3Align1{}
+ var v11 uint8 = 4
+ var v12 uint8 = 5
+ var v13 uint8 = 6
+ v14 := [3]uint8{v11, v12, v13}
+ v10.ThreeBytes = v14
+ v2.SetS2(v10)
+ v1.Table = v2
+
+ decodeSuccessCase{
+ name: "Table_UnionWithVector_StructSandwich",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x00, 0x00, 0x00,
+ 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.TableUnionWithVectorStructSandwichStruct{}
+ v2 := conformance.TableUnionWithVectorStructSandwich{}
+ v3 := conformance.StructSize3Align1{}
+ var v4 uint8 = 1
+ var v5 uint8 = 2
+ var v6 uint8 = 3
+ v7 := [3]uint8{v4, v5, v6}
+ v3.ThreeBytes = v7
+ v2.SetS1(v3)
+ v8 := conformance.UnionWithVector{}
+ v9 := "hello"
+ v8.SetString(v9)
+ v2.SetUv(v8)
+ v10 := conformance.StructSize3Align1{}
+ var v11 uint8 = 4
+ var v12 uint8 = 5
+ var v13 uint8 = 6
+ v14 := [3]uint8{v11, v12, v13}
+ v10.ThreeBytes = v14
+ v2.SetS2(v10)
+ v1.Table = v2
+
+ decodeSuccessCase{
+ name: "Table_UnionWithVector_StructSandwich_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x00, 0x00, 0x00,
+ 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.XUnionWithStructStruct{}
+ v2 := conformance.XUnionWithStruct{}
+ v3 := conformance.StructSize3Align1{}
+ var v4 uint8 = 1
+ var v5 uint8 = 2
+ var v6 uint8 = 3
+ v7 := [3]uint8{v4, v5, v6}
+ v3.ThreeBytes = v7
+ v2.SetS(v3)
+ v1.Xu = v2
+
+ decodeSuccessCase{
+ name: "XUnionWithStruct",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x14, 0x5c, 0x3e, 0x19, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.XUnionWithStructStruct{}
+ v2 := conformance.XUnionWithStruct{}
+ v3 := conformance.StructSize3Align1{}
+ var v4 uint8 = 1
+ var v5 uint8 = 2
+ var v6 uint8 = 3
+ v7 := [3]uint8{v4, v5, v6}
+ v3.ThreeBytes = v7
+ v2.SetS(v3)
+ v1.Xu = v2
+
+ decodeSuccessCase{
+ name: "XUnionWithStruct_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x14, 0x5c, 0x3e, 0x19, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.ArrayStruct{}
+ v2 := conformance.StringUnion{}
+ v3 := "one"
+ v2.SetS(v3)
+ v4 := conformance.StringUnion{}
+ v5 := "two"
+ v4.SetS(v5)
+ v6 := conformance.StringUnion{}
+ v7 := "three"
+ v6.SetS(v7)
+ v8 := [3]conformance.StringUnion{v2, v4, v6}
+ v1.Unions = v8
+ v9 := &conformance.StringUnion{}
+ v10 := "four"
+ v9.SetS(v10)
+ v11 := &conformance.StringUnion{}
+ v12 := "five"
+ v11.SetS(v12)
+ v13 := &conformance.StringUnion{}
+ v14 := "six"
+ v13.SetS(v14)
+ v15 := [3]*conformance.StringUnion{v9, v11, v13}
+ v1.OptionalUnions = v15
+
+ decodeSuccessCase{
+ name: "ArrayStruct",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x6f, 0x6e, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x74, 0x77, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x74, 0x68, 0x72, 0x65, 0x65, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x66, 0x6f, 0x75, 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x66, 0x69, 0x76, 0x65, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x73, 0x69, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.ArrayStruct{}
+ v2 := conformance.StringUnion{}
+ v3 := "one"
+ v2.SetS(v3)
+ v4 := conformance.StringUnion{}
+ v5 := "two"
+ v4.SetS(v5)
+ v6 := conformance.StringUnion{}
+ v7 := "three"
+ v6.SetS(v7)
+ v8 := [3]conformance.StringUnion{v2, v4, v6}
+ v1.Unions = v8
+ v9 := &conformance.StringUnion{}
+ v10 := "four"
+ v9.SetS(v10)
+ v11 := &conformance.StringUnion{}
+ v12 := "five"
+ v11.SetS(v12)
+ v13 := &conformance.StringUnion{}
+ v14 := "six"
+ v13.SetS(v14)
+ v15 := [3]*conformance.StringUnion{v9, v11, v13}
+ v1.OptionalUnions = v15
+
+ decodeSuccessCase{
+ name: "ArrayStruct_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x6f, 0x6e, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x74, 0x77, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x74, 0x68, 0x72, 0x65, 0x65, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x66, 0x6f, 0x75, 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x66, 0x69, 0x76, 0x65, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x73, 0x69, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression1{}
+ var v2 uint8 = 1
+ v1.F1 = v2
+ var v3 uint32 = 2
+ v1.F2 = v3
+ var v4 uint8 = 3
+ v1.F3 = v4
+ var v5 uint16 = 4
+ v1.F4 = v5
+ var v6 uint64 = 5
+ v1.F5 = v6
+ var v7 uint8 = 6
+ v1.F6 = v7
+
+ decodeSuccessCase{
+ name: "Regression1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression1{}
+ var v2 uint8 = 1
+ v1.F1 = v2
+ var v3 uint32 = 2
+ v1.F2 = v3
+ var v4 uint8 = 3
+ v1.F3 = v4
+ var v5 uint16 = 4
+ v1.F4 = v5
+ var v6 uint64 = 5
+ v1.F5 = v6
+ var v7 uint8 = 6
+ v1.F6 = v7
+
+ decodeSuccessCase{
+ name: "Regression1_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression2{}
+ v2 := conformance.Regression1{}
+ var v3 uint8 = 1
+ v2.F1 = v3
+ var v4 uint32 = 2
+ v2.F2 = v4
+ var v5 uint8 = 3
+ v2.F3 = v5
+ var v6 uint16 = 4
+ v2.F4 = v6
+ var v7 uint64 = 5
+ v2.F5 = v7
+ var v8 uint8 = 6
+ v2.F6 = v8
+ v1.Head = v2
+ var v9 uint8 = 7
+ v1.F7 = v9
+
+ decodeSuccessCase{
+ name: "Regression2",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression2{}
+ v2 := conformance.Regression1{}
+ var v3 uint8 = 1
+ v2.F1 = v3
+ var v4 uint32 = 2
+ v2.F2 = v4
+ var v5 uint8 = 3
+ v2.F3 = v5
+ var v6 uint16 = 4
+ v2.F4 = v6
+ var v7 uint64 = 5
+ v2.F5 = v7
+ var v8 uint8 = 6
+ v2.F6 = v8
+ v1.Head = v2
+ var v9 uint8 = 7
+ v1.F7 = v9
+
+ decodeSuccessCase{
+ name: "Regression2_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression3{}
+
+ decodeSuccessCase{
+ name: "Regression3Absent",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression3{}
+
+ decodeSuccessCase{
+ name: "Regression3Absent_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression3{}
+ v2 := &conformance.Regression2{}
+ v3 := conformance.Regression1{}
+ var v4 uint8 = 1
+ v3.F1 = v4
+ var v5 uint32 = 2
+ v3.F2 = v5
+ var v6 uint8 = 3
+ v3.F3 = v6
+ var v7 uint16 = 4
+ v3.F4 = v7
+ var v8 uint64 = 5
+ v3.F5 = v8
+ var v9 uint8 = 6
+ v3.F6 = v9
+ v2.Head = v3
+ var v10 uint8 = 7
+ v2.F7 = v10
+ v1.OptValue = v2
+
+ decodeSuccessCase{
+ name: "Regression3Present",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: false,
+ EncodeUnionsAsXUnionBytes: false,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
+ v1 := conformance.Regression3{}
+ v2 := &conformance.Regression2{}
+ v3 := conformance.Regression1{}
+ var v4 uint8 = 1
+ v3.F1 = v4
+ var v5 uint32 = 2
+ v3.F2 = v5
+ var v6 uint8 = 3
+ v3.F3 = v6
+ var v7 uint16 = 4
+ v3.F4 = v7
+ var v8 uint64 = 5
+ v3.F5 = v8
+ var v9 uint8 = 6
+ v3.F6 = v9
+ v2.Head = v3
+ var v10 uint8 = 7
+ v2.F7 = v10
+ v1.OptValue = v2
+
+ decodeSuccessCase{
+ name: "Regression3Present_v1",
+ context: fidl.MarshalerContext{
+ DecodeUnionsFromXUnionBytes: true,
+ EncodeUnionsAsXUnionBytes: true,
+ },
+ input: &v1,
+ bytes: []byte{
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+ }
+
+ {
v1 := conformance.UnionWithBoundStringStruct{}
v2 := conformance.UnionWithBoundString{}
v3 := "abcd"