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

library fidl.difl.test;

// Before

using UsingToEnum = uint32;

enum EnumToStruct {
    VALUE = 1;
};

//!StructSizeChanged
//!StructMemberAdded
struct StructThatChanges {
    int32 foo;
    int32 bar;
};

struct UnchangedStruct {
    int32 foo;
    int32 bar;
};

table DefinitionsChange {
    //!TableMemberTypeChanged
    1: UsingToEnum using_to_enum;

    //!TableMemberTypeChanged
    2: EnumToStruct enum_to_struct;

    //!TableMemberTypeChanged
    3: StructThatChanges struct_that_changes;

    4: UnchangedStruct unchanged_struct;
};