| // Protocol Buffers - Google's data interchange format |
| // Copyright 2008 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"; |
| |
| package map_for_proto2_lite_test; |
| |
| option features.enum_type = CLOSED; |
| option features.utf8_validation = NONE; |
| option java_outer_classname = "MapForProto2TestProto"; |
| option optimize_for = LITE_RUNTIME; |
| option java_package = "map_lite_test"; |
| |
| message TestMap { |
| message MessageValue { |
| int32 value = 1; |
| } |
| |
| enum EnumValue { |
| FOO = 0; |
| BAR = 1; |
| BAZ = 2; |
| QUX = 3; |
| } |
| |
| map<int32, int32> int32_to_int32_field = 1; |
| map<int32, string> int32_to_string_field = 2; |
| map<int32, bytes> int32_to_bytes_field = 3; |
| map<int32, EnumValue> int32_to_enum_field = 4; |
| map<int32, MessageValue> int32_to_message_field = 5; |
| map<string, int32> string_to_int32_field = 6; |
| |
| message MessageWithRequiredFields { |
| int32 value = 1 [features.field_presence = LEGACY_REQUIRED]; |
| } |
| |
| map<int32, MessageWithRequiredFields> required_message_map = 11; |
| } |
| |
| message TestUnknownEnumValue { |
| // Wire-compatible with TestMap.int32_to_enum_field so we can test the |
| // parsing behavior of TestMap regarding unknown enum values. |
| map<int32, int32> int32_to_int32_field = 4; |
| } |
| |
| // Test that the maps initialization code works correctly when the map field |
| // references the containing message. |
| message TestRecursiveMap { |
| int32 value = 1; |
| map<int32, TestRecursiveMap> recursive_map_field = 2; |
| } |
| |
| // a decoy of TestMap for testing parsing errors |
| message BizarroTestMap { |
| // same key type, different value |
| map<int32, bytes> int32_to_int32_field = 1; |
| |
| // different key and value types |
| map<string, int32> int32_to_string_field = 2; |
| |
| // different key types, same value |
| map<string, int32> int32_to_bytes_field = 3; |
| |
| // different key and value types |
| map<string, bytes> int32_to_enum_field = 4; |
| |
| // different key and value types |
| map<string, bytes> int32_to_message_field = 5; |
| |
| // same key type, different value |
| map<string, bytes> string_to_int32_field = 6; |
| } |
| |
| // Used to test that java reserved words can be used as protobuf field names |
| // Not all reserved words are tested (to avoid bloat) but instead an arbitrary |
| // subset of them chosen to cover various keyword categories like |
| // type, modifier, declaration, etc. |
| message ReservedAsMapField { |
| map<string, uint32> if = 1; |
| map<string, uint32> const = 2; |
| map<string, uint32> private = 3; |
| map<string, uint32> class = 4; |
| map<string, uint32> int = 5; |
| map<string, uint32> void = 6; |
| |
| // These are also proto keywords |
| map<string, uint32> string = 7; |
| map<string, uint32> package = 8; |
| |
| // Most recent Java reserved word |
| map<string, uint32> enum = 9; |
| |
| // null is not a 'reserved word' per se but as a literal needs similar care |
| map<string, uint32> null = 10; |
| } |
| |
| message ReservedAsMapFieldWithEnumValue { |
| enum SampleEnum { |
| A = 0; |
| B = 1; |
| } |
| |
| map<string, SampleEnum> if = 1; |
| map<string, SampleEnum> const = 2; |
| map<string, SampleEnum> private = 3; |
| map<string, SampleEnum> class = 4; |
| map<string, SampleEnum> int = 5; |
| map<string, SampleEnum> void = 6; |
| |
| // These are also proto keywords |
| map<string, SampleEnum> string = 7; |
| map<string, SampleEnum> package = 8; |
| |
| // Most recent Java reserved word |
| map<string, SampleEnum> enum = 9; |
| |
| // null is not a 'reserved word' per se but as a literal needs similar care |
| map<string, SampleEnum> null = 10; |
| } |