// Protocol Buffers - Google's data interchange format // Copyright 2025 Google LLC. All rights reserved. // // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file or at // https://developers.google.com/open-source/licenses/bsd edition = "2023"; package upb_test; enum OpenEnum { OPEN_ENUM_UNSPECIFIED = 0; OPEN_ENUM_FOO = 1; OPEN_ENUM_BAR = 2; } enum ClosedEnum { option features.enum_type = CLOSED; CLOSED_ENUM_UNSPECIFIED = 0; CLOSED_ENUM_FOO = 1; CLOSED_ENUM_BAR = 2; } message DebugStringTestMessage { int32 int32_field = 1; // Different field modes. repeated int64 packed_int64_field = 2; repeated int64 repeated_int64_field = 3 [features.repeated_field_encoding = EXPANDED]; map map_field = 4; // Different field presence. int32 required_field = 5 [features.field_presence = LEGACY_REQUIRED]; int32 implicit_presence_field = 6 [features.field_presence = IMPLICIT]; // Different enum types. ClosedEnum closed_enum_field = 7; OpenEnum open_enum_field = 8; // Different UTF-8 validation types. string utf8_validated_string_field = 9 [features.utf8_validation = VERIFY]; string utf8_invalid_string_field = 10 [features.utf8_validation = NONE]; SubMessage sub_message_field = 11; bool bool_field = 12; } message SubMessage { // Test that we can handle cyclic messages. DebugStringTestMessage cycle_field = 1; }