// Protocol Buffers - Google's data interchange format // Copyright 2023 Google Inc. 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"; // This file contains various edge cases we've collected from migrating real // protos in order to lock down the transformations. // LINT: ALLOW_GROUPS package protobuf_editions_test; import "net/proto/proto1_features.proto"; import "google/protobuf/java_features.proto"; import "google/protobuf/cpp_features.proto"; import "editions/proto/editions_transform_proto3.proto"; option features.repeated_field_encoding = EXPANDED; option features.utf8_validation = NONE; option java_api_version = 1; option java_multiple_files = true; option cc_enable_arenas = true; message EmptyMessage { } message EmptyMessage2 { } service EmptyService { } service BasicService { rpc BasicMethod(EmptyMessage) returns (EmptyMessage) {} } // clang-format off message UnformattedMessage { int32 a = 1; message Foo { int32 a = 1; } Foo foo = 2 [ features.message_encoding = DELIMITED ]; string string_piece_with_zero = 3 [ ctype = STRING_PIECE, default = "ab\000c" ]; float long_float_name_wrapped = 4; } // clang-format on message ParentMessage { message ExtendedMessage { extensions 536860000 to 536869999 [ declaration = { number: 536860000 full_name: ".protobuf_editions_test.extension" type: ".protobuf_editions_test.EmptyMessage" } ]; } } extend ParentMessage.ExtendedMessage { EmptyMessage extension = 536860000; } message TestMessage { string string_field = 1; map string_map_field = 7; repeated int32 int_field = 8; repeated int32 int_field_packed = 9 [ features.repeated_field_encoding = PACKED, features.(pb.proto1).legacy_packed = true ]; repeated int32 int_field_unpacked = 10; repeated int32 options_strip_beginning = 4 [ /* inline comment */ debug_redact = true, deprecated = false ]; repeated int32 options_strip_middle = 5 [ debug_redact = true, deprecated = false ]; repeated int32 options_strip_end = 6 [ debug_redact = true, deprecated = false ]; message OptionalGroup { int32 a = 17; } OptionalGroup optionalgroup = 16 [ features.message_encoding = DELIMITED ]; } enum TestEnum { option features.enum_type = CLOSED; FOO = 1; // Non-zero default BAR = 2; BAZ = 3; NEG = -1; // Intentionally negative. } message TestOpenEnumMessage { TestEnumProto3 open_enum_field = 1 [ features.(pb.cpp).legacy_closed_enum = true, features.(pb.java).legacy_closed_enum = true ]; TestEnum closed_enum_field = 2; }