| // 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 |
| |
| // Author: jonp@google.com (Jon Perlow) |
| |
| // This file tests that various identifiers work as field and type names even |
| // though the same identifiers are used internally by the java code generator. |
| // LINT: LEGACY_NAMES |
| |
| edition = "2023"; |
| |
| package io_protocol_tests; |
| |
| option features.repeated_field_encoding = EXPANDED; |
| option features.utf8_validation = NONE; |
| option features.enum_type = CLOSED; |
| option java_generic_services = true; // auto-added |
| option java_package = "com.google.protobuf"; |
| option java_outer_classname = "TestBadIdentifiersProto"; |
| |
| // Message with field names using underscores that conflict with accessors in |
| // the base message class in java. See kForbiddenWordList in |
| // src/google/protobuf/compiler/java/java_helpers.cc |
| message ForbiddenWordsUnderscoreMessage { |
| // java.lang.Object |
| bool class = 1; |
| // com.google.protobuf.MessageLiteOrBuilder |
| bool default_instance_for_type = 2; |
| // com.google.protobuf.MessageLite |
| bool parser_for_type = 3; |
| bool serialized_size = 4; |
| // com.google.protobuf.MessageOrBuilder |
| bool all_fields = 5; |
| bool descriptor_for_type = 6; |
| bool initialization_error_string = 7; |
| bool unknown_fields = 8; |
| // obsolete. kept for backwards compatibility of generated code |
| bool cached_size = 9; |
| } |
| |
| // Message with field names using leading underscores that conflict with |
| // accessors in the base message class in java. See kForbiddenWordList in |
| // src/google/protobuf/compiler/java/java_helpers.cc |
| message ForbiddenWordsLeadingUnderscoreMessage { |
| // java.lang.Object |
| bool _class = 1; |
| // com.google.protobuf.MessageLiteOrBuilder |
| bool _default_instance_for_type = 2; |
| // com.google.protobuf.MessageLite |
| bool _parser_for_type = 3; |
| bool _serialized_size = 4; |
| // com.google.protobuf.MessageOrBuilder |
| bool _all_fields = 5; |
| bool _descriptor_for_type = 6; |
| bool _initialization_error_string = 7; |
| // TODO: re-enable |
| // bool _unknown_fields = 8; |
| // obsolete. kept for backwards compatibility of generated code |
| bool _cached_size = 9; |
| } |
| |
| // Message with field names in camel case that conflict with accessors in the |
| // base message class in java. See kForbiddenWordList in |
| // src/google/protobuf/compiler/java/java_helpers.cc |
| message ForbiddenWordsCamelMessage { |
| // java.lang.Object |
| bool class = 1; |
| // com.google.protobuf.MessageLiteOrBuilder |
| bool defaultInstanceForType = 2; |
| // com.google.protobuf.MessageLite |
| bool serializedSize = 3; |
| bool parserForType = 4; |
| // com.google.protobuf.MessageOrBuilder: |
| bool initializationErrorString = 5; |
| bool descriptorForType = 6; |
| bool allFields = 7; |
| // TODO: re-enable |
| // bool unknownFields = 8; |
| // obsolete. kept for backwards compatibility of generated code |
| bool cachedSize = 9; |
| } |
| |
| message Descriptor { |
| option no_standard_descriptor_accessor = true; |
| |
| string descriptor = 1; |
| message NestedDescriptor { |
| option no_standard_descriptor_accessor = true; |
| |
| string descriptor = 1; |
| } |
| NestedDescriptor nested_descriptor = 2; |
| enum NestedEnum { |
| UNKNOWN = 0; |
| FOO = 1; |
| } |
| } |
| |
| message Parser { |
| enum ParserEnum { |
| UNKNOWN = 0; |
| PARSER = 1; |
| } |
| ParserEnum parser = 1; |
| } |
| |
| message Deprecated { |
| enum TestEnum { |
| UNKNOWN = 0; |
| FOO = 1; |
| |
| // Test if @Deprecated annotation conflicts with Deprecated message name. |
| BAR = 2 [deprecated = true]; |
| } |
| |
| int32 field1 = 1 [deprecated = true]; |
| TestEnum field2 = 2 [deprecated = true]; |
| ForbiddenWordsUnderscoreMessage field3 = 3 [deprecated = true]; |
| } |
| |
| message Override { |
| int32 override = 1; |
| } |
| |
| message Object { |
| int32 object = 1; |
| string string_object = 2; |
| } |
| |
| message String { |
| string string = 1; |
| } |
| |
| message Integer { |
| int32 integer = 1; |
| } |
| |
| message Long { |
| int32 long = 1; |
| } |
| |
| message Float { |
| float float = 1; |
| } |
| |
| message Double { |
| double double = 1; |
| } |
| |
| service TestConflictingMethodNames { |
| rpc Override(ForbiddenWordsUnderscoreMessage) |
| returns (ForbiddenWordsUnderscoreMessage); |
| } |
| |
| message TestConflictingFieldNames { |
| // TODO Remove these tests once this behavior is removed. |
| option deprecated_legacy_json_field_conflicts = true; |
| |
| enum TestEnum { |
| UNKNOWN = 0; |
| FOO = 1; |
| } |
| message ForbiddenWordsUnderscoreMessage {} |
| repeated int32 int32_field = 1; |
| repeated TestEnum enum_field = 2; |
| repeated string string_field = 3; |
| repeated bytes bytes_field = 4; |
| repeated ForbiddenWordsUnderscoreMessage message_field = 5; |
| |
| int32 int32_field_count = 11; |
| TestEnum enum_field_count = 12; |
| string string_field_count = 13; |
| bytes bytes_field_count = 14; |
| ForbiddenWordsUnderscoreMessage message_field_count = 15; |
| |
| repeated int32 Int32Field = 21; // NO_PROTO3 |
| repeated TestEnum EnumField = 22; // NO_PROTO3 |
| repeated string StringField = 23; // NO_PROTO3 |
| repeated bytes BytesField = 24; // NO_PROTO3 |
| repeated ForbiddenWordsUnderscoreMessage MessageField = 25; // NO_PROTO3 |
| |
| // This field conflicts with "int32_field" as they both generate |
| // the method getInt32FieldList(). |
| int32 int32_field_list = 31 |
| [features.field_presence = LEGACY_REQUIRED]; // NO_PROTO3 |
| |
| // These field pairs have the same Java converted name |
| string field_name = 32; // NO_PROTO3 |
| string field__name = 33; // NO_PROTO3 |
| int32 _2conflict = 34; // NO_PROTO3 |
| int32 __2conflict = 35; |
| |
| extensions 1000 to max; // NO_PROTO3 |
| |
| repeated int64 int64_field = 41; |
| extend TestConflictingFieldNames { // NO_PROTO3 |
| // We don't generate accessors for extensions so the following extension |
| // fields don't conflict with the repeated field "int64_field". |
| int64 int64_field_count = 1001; // NO_PROTO3 |
| int64 int64_field_list = 1002; // NO_PROTO3 |
| } // NO_PROTO3 |
| } |
| |
| message TestMapField { |
| message MapField {} |
| message Pair {} |
| message Message {} |
| |
| map<int32, int32> map_field = 1; |
| } |
| |
| message TestLeadingNumberFields { |
| int32 _30day_impressions = 1; |
| repeated string _60day_impressions = 2; |
| |
| string __2_underscores = 3; |
| repeated string __2repeated_underscores = 4; |
| |
| int32 _32 = 32; |
| repeated int64 _64 = 64; |
| } |