// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library test.conformance;

type StrictEnumInt8 = strict enum : int8 {
    FIRST = 0x01;
    SECOND = 0x11;
};

type StrictEnumInt16 = strict enum : int16 {
    FIRST = 0x0102;
    SECOND = 0x1112;
};

type StrictEnumInt32 = strict enum : int32 {
    FIRST = 0x01020304;
    SECOND = 0x11121314;
};

type StrictEnumInt64 = strict enum : int64 {
    FIRST = 0x0102030405060708;
    SECOND = 0x1112131415161718;
};

type StrictEnumUint8 = strict enum : uint8 {
    FIRST = 1;
    SECOND = 2;
};

type StrictEnumUint16 = strict enum : uint16 {
    FIRST = 0x0102;
    SECOND = 0x1112;
};

type StrictEnumUint32 = strict enum : uint32 {
    FIRST = 0x01020304;
    SECOND = 0x11121314;
};

type StrictEnumUint64 = strict enum : uint64 {
    FIRST = 0x0102030405060708;
    SECOND = 0x1112131415161718;
};

type StrictEnumInt8Struct = struct {
    e StrictEnumInt8;
};

type StrictEnumInt16Struct = struct {
    e StrictEnumInt16;
};

type StrictEnumInt32Struct = struct {
    e StrictEnumInt32;
};

type StrictEnumInt64Struct = struct {
    e StrictEnumInt64;
};

type StrictEnumUint8Struct = struct {
    e StrictEnumUint8;
};

type StrictEnumUint16Struct = struct {
    e StrictEnumUint16;
};

type StrictEnumUint32Struct = struct {
    e StrictEnumUint32;
};

type StrictEnumUint64Struct = struct {
    e StrictEnumUint64;
};

type VectorOfEnumStruct = struct {
    v vector<StrictEnumInt16>;
};
