// 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 conformance;

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

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

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

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

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

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

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

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

struct StrictEnumInt8Struct {
    StrictEnumInt8 e;
};

struct StrictEnumInt16Struct {
    StrictEnumInt16 e;
};

struct StrictEnumInt32Struct {
    StrictEnumInt32 e;
};

struct StrictEnumInt64Struct {
    StrictEnumInt64 e;
};

struct StrictEnumUint8Struct {
    StrictEnumUint8 e;
};

struct StrictEnumUint16Struct {
    StrictEnumUint16 e;
};

struct StrictEnumUint32Struct {
    StrictEnumUint32 e;
};

struct StrictEnumUint64Struct {
    StrictEnumUint64 e;
};
