blob: 5c70ed43caaa4ea20787735fd703e0eb17491fd9 [file] [log] [blame]
// 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;
}