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

union UnionWithBoundString {
    string:5 boundFiveStr;
};

struct UnionWithBoundStringStruct {
    UnionWithBoundString v;
};

union SingleVariantUnion {
    1: uint32 x;
};

struct SingleVariantUnionStruct {
    SingleVariantUnion u;
};
