// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Types useful for tests for the 2019 migration from
// unions to xunions.

library fidl.test.unionmigration;

flexible union BasicXUnion {
    1: int32 i32;
};

flexible resource union BasicResourceXUnion {
    1: int32 i32;
};

union BasicUnion {
    1: int32 i32;
};

struct BasicXUnionStruct {
    BasicXUnion val;
};

resource struct BasicResourceXUnionStruct {
    BasicResourceXUnion val;
};

struct BasicUnionStruct {
    BasicUnion val;
};

union SingleVariantUnion {
    1: uint32 x;
};

struct SingleVariantUnionStruct {
    SingleVariantUnion u;
};

struct SingleVariantUnionStructWithHeader {
    // Header exists to emulate the shape of the transaction header.
    array<uint8>:16 header;
    SingleVariantUnionStruct body;
};
