Migrate syntax reflection to new feature-based system.

PiperOrigin-RevId: 513904931
pull/12140/head
Mike Kruskal 2 years ago committed by Copybara-Service
parent ae2531dcc2
commit ad77e1ab2f
  1. 8
      src/google/protobuf/compiler/java/enum.cc
  2. 50
      src/google/protobuf/compiler/java/enum_field.cc
  3. 46
      src/google/protobuf/compiler/java/enum_field_lite.cc
  4. 6
      src/google/protobuf/compiler/java/enum_lite.cc
  5. 16
      src/google/protobuf/compiler/java/helpers.cc
  6. 26
      src/google/protobuf/compiler/java/helpers.h
  7. 42
      src/google/protobuf/compiler/java/map_field.cc
  8. 46
      src/google/protobuf/compiler/java/map_field_lite.cc
  9. 2
      src/google/protobuf/compiler/java/message_lite.cc
  10. 16
      src/google/protobuf/compiler/java/primitive_field.cc
  11. 18
      src/google/protobuf/compiler/java/primitive_field_lite.cc
  12. 16
      src/google/protobuf/compiler/java/string_field.cc
  13. 18
      src/google/protobuf/compiler/java/string_field_lite.cc

@ -119,7 +119,7 @@ void EnumGenerator::Generate(io::Printer* printer) {
printer->Annotate("name", canonical_values_[i]);
}
if (SupportUnknownEnumValue(descriptor_->file())) {
if (!descriptor_->is_closed()) {
if (ordinal_is_index) {
printer->Print("${$UNRECOGNIZED$}$(-1),\n", "{", "", "}", "");
} else {
@ -167,7 +167,7 @@ void EnumGenerator::Generate(io::Printer* printer) {
printer->Print(
"\n"
"public final int getNumber() {\n");
if (SupportUnknownEnumValue(descriptor_->file())) {
if (!descriptor_->is_closed()) {
if (ordinal_is_index) {
printer->Print(
" if (this == UNRECOGNIZED) {\n"
@ -251,7 +251,7 @@ void EnumGenerator::Generate(io::Printer* printer) {
printer->Print(
"public final com.google.protobuf.Descriptors.EnumValueDescriptor\n"
" getValueDescriptor() {\n");
if (SupportUnknownEnumValue(descriptor_->file())) {
if (!descriptor_->is_closed()) {
if (ordinal_is_index) {
printer->Print(
" if (this == UNRECOGNIZED) {\n"
@ -346,7 +346,7 @@ void EnumGenerator::Generate(io::Printer* printer) {
" \"EnumValueDescriptor is not for this type.\");\n"
" }\n",
"classname", descriptor_->name());
if (SupportUnknownEnumValue(descriptor_->file())) {
if (!descriptor_->is_closed()) {
printer->Print(
" if (desc.getIndex() == -1) {\n"
" return UNRECOGNIZED;\n"

@ -88,7 +88,7 @@ void SetEnumVariables(
? absl::StrCat("@kotlin.Deprecated(message = \"Field ",
(*variables)["name"], " is deprecated\") ")
: ""});
if (HasHasbit(descriptor)) {
if (descriptor->has_presence()) {
// For singular messages and builders, one bit is used for the hasField bit.
(*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex);
// Note that these have a trailing ";".
@ -120,7 +120,7 @@ void SetEnumVariables(
(*variables)["get_has_field_bit_from_local"] =
GenerateGetBitFromLocal(builderBitIndex);
if (SupportUnknownEnumValue(descriptor->file())) {
if (SupportUnknownEnumValue(descriptor)) {
variables->insert(
{"unknown", absl::StrCat((*variables)["type"], ".UNRECOGNIZED")});
} else {
@ -162,12 +162,12 @@ int ImmutableEnumFieldGenerator::GetNumBitsForBuilder() const { return 1; }
void ImmutableEnumFieldGenerator::GenerateInterfaceMembers(
io::Printer* printer) const {
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"$deprecation$boolean has$capitalized_name$();\n");
}
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(variables_,
"$deprecation$int get$capitalized_name$Value();\n");
@ -179,7 +179,7 @@ void ImmutableEnumFieldGenerator::GenerateInterfaceMembers(
void ImmutableEnumFieldGenerator::GenerateMembers(io::Printer* printer) const {
printer->Print(variables_, "private int $name$_ = $default_number$;\n");
PrintExtraFieldInfo(variables_, printer);
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"@java.lang.Override $deprecation$public boolean "
@ -188,7 +188,7 @@ void ImmutableEnumFieldGenerator::GenerateMembers(io::Printer* printer) const {
"}\n");
printer->Annotate("{", "}", descriptor_);
}
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(variables_,
"@java.lang.Override $deprecation$public int "
@ -210,7 +210,7 @@ void ImmutableEnumFieldGenerator::GenerateMembers(io::Printer* printer) const {
void ImmutableEnumFieldGenerator::GenerateBuilderMembers(
io::Printer* printer) const {
printer->Print(variables_, "private int $name$_ = $default_number$;\n");
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"@java.lang.Override $deprecation$public boolean "
@ -219,7 +219,7 @@ void ImmutableEnumFieldGenerator::GenerateBuilderMembers(
"}\n");
printer->Annotate("{", "}", descriptor_);
}
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(variables_,
"@java.lang.Override $deprecation$public int "
@ -286,7 +286,7 @@ void ImmutableEnumFieldGenerator::GenerateKotlinDslMembers(
" $kt_dsl_builder$.${$set$capitalized_name$$}$(value)\n"
" }\n");
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
printer->Print(
variables_,
"$kt_deprecation$public var $kt_name$Value: kotlin.Int\n"
@ -305,7 +305,7 @@ void ImmutableEnumFieldGenerator::GenerateKotlinDslMembers(
" $kt_dsl_builder$.${$clear$capitalized_name$$}$()\n"
"}\n");
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER,
/* builder */ false, /* kdoc */ true);
printer->Print(
@ -333,12 +333,12 @@ void ImmutableEnumFieldGenerator::GenerateBuilderClearCode(
void ImmutableEnumFieldGenerator::GenerateMergingCode(
io::Printer* printer) const {
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
printer->Print(variables_,
"if (other.has$capitalized_name$()) {\n"
" set$capitalized_name$(other.get$capitalized_name$());\n"
"}\n");
} else if (SupportUnknownEnumValue(descriptor_->file())) {
} else if (SupportUnknownEnumValue(descriptor_)) {
printer->Print(
variables_,
"if (other.$name$_ != $default_number$) {\n"
@ -362,7 +362,7 @@ void ImmutableEnumFieldGenerator::GenerateBuildingCode(
void ImmutableEnumFieldGenerator::GenerateBuilderParsingCode(
io::Printer* printer) const {
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
printer->Print(variables_,
"$name$_ = input.readEnum();\n"
"$set_has_field_bit_builder$\n");
@ -429,7 +429,7 @@ ImmutableEnumOneofFieldGenerator::~ImmutableEnumOneofFieldGenerator() {}
void ImmutableEnumOneofFieldGenerator::GenerateMembers(
io::Printer* printer) const {
PrintExtraFieldInfo(variables_, printer);
ABSL_DCHECK(HasHazzer(descriptor_));
ABSL_DCHECK(descriptor_->has_presence());
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"$deprecation$public boolean ${$has$capitalized_name$$}$() {\n"
@ -437,7 +437,7 @@ void ImmutableEnumOneofFieldGenerator::GenerateMembers(
"}\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(
variables_,
@ -464,7 +464,7 @@ void ImmutableEnumOneofFieldGenerator::GenerateMembers(
void ImmutableEnumOneofFieldGenerator::GenerateBuilderMembers(
io::Printer* printer) const {
ABSL_DCHECK(HasHazzer(descriptor_));
ABSL_DCHECK(descriptor_->has_presence());
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"@java.lang.Override\n"
@ -473,7 +473,7 @@ void ImmutableEnumOneofFieldGenerator::GenerateBuilderMembers(
"}\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(
variables_,
@ -552,7 +552,7 @@ void ImmutableEnumOneofFieldGenerator::GenerateBuildingCode(
void ImmutableEnumOneofFieldGenerator::GenerateMergingCode(
io::Printer* printer) const {
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
printer->Print(
variables_,
"set$capitalized_name$Value(other.get$capitalized_name$Value());\n");
@ -564,7 +564,7 @@ void ImmutableEnumOneofFieldGenerator::GenerateMergingCode(
void ImmutableEnumOneofFieldGenerator::GenerateBuilderParsingCode(
io::Printer* printer) const {
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
printer->Print(variables_,
"int rawValue = input.readEnum();\n"
"$set_oneof_case_message$;\n"
@ -604,7 +604,7 @@ void ImmutableEnumOneofFieldGenerator::GenerateSerializedSizeCode(
void ImmutableEnumOneofFieldGenerator::GenerateEqualsCode(
io::Printer* printer) const {
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
printer->Print(
variables_,
"if (get$capitalized_name$Value()\n"
@ -619,7 +619,7 @@ void ImmutableEnumOneofFieldGenerator::GenerateEqualsCode(
void ImmutableEnumOneofFieldGenerator::GenerateHashCode(
io::Printer* printer) const {
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
printer->Print(variables_,
"hash = (37 * hash) + $constant_name$;\n"
"hash = (53 * hash) + get$capitalized_name$Value();\n");
@ -661,7 +661,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateInterfaceMembers(
WriteFieldAccessorDocComment(printer, descriptor_, LIST_INDEXED_GETTER);
printer->Print(variables_,
"$deprecation$$type$ get$capitalized_name$(int index);\n");
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, LIST_GETTER);
printer->Print(variables_,
"$deprecation$java.util.List<java.lang.Integer>\n"
@ -716,7 +716,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateMembers(
" return $name$_converter_.convert($name$_.get(index));\n"
"}\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, LIST_GETTER);
printer->Print(variables_,
"@java.lang.Override\n"
@ -844,7 +844,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderMembers(
"}\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, LIST_GETTER);
printer->Print(variables_,
"$deprecation$public java.util.List<java.lang.Integer>\n"
@ -954,7 +954,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuildingCode(
void RepeatedImmutableEnumFieldGenerator::GenerateBuilderParsingCode(
io::Printer* printer) const {
// Read and store the enum
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
printer->Print(variables_,
"int tmpRaw = input.readEnum();\n"
"ensure$capitalized_name$IsMutable();\n"

@ -97,7 +97,7 @@ void SetEnumVariables(
: ""});
(*variables)["required"] = descriptor->is_required() ? "true" : "false";
if (HasHasbit(descriptor)) {
if (descriptor->has_presence()) {
if (!context->options().opensource_runtime) {
(*variables)["bit_field_id"] = absl::StrCat(messageBitIndex / 32);
(*variables)["bit_field_name"] = GetBitFieldNameForBit(messageBitIndex);
@ -128,7 +128,7 @@ void SetEnumVariables(
(*variables)["set_has_field_bit_to_local"] =
GenerateSetBitToLocal(messageBitIndex);
if (SupportUnknownEnumValue(descriptor->file())) {
if (SupportUnknownEnumValue(descriptor)) {
variables->insert(
{"unknown", absl::StrCat((*variables)["type"], ".UNRECOGNIZED")});
} else {
@ -166,13 +166,13 @@ int ImmutableEnumFieldLiteGenerator::GetNumBitsForMessage() const {
void ImmutableEnumFieldLiteGenerator::GenerateInterfaceMembers(
io::Printer* printer) const {
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"$deprecation$boolean ${$has$capitalized_name$$}$();\n");
printer->Annotate("{", "}", descriptor_);
}
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(variables_,
"$deprecation$int ${$get$capitalized_name$Value$}$();\n");
@ -193,7 +193,7 @@ void ImmutableEnumFieldLiteGenerator::GenerateMembers(
" fieldNumber=$number$,\n"
" type=com.google.protobuf.FieldType.$annotation_field_type$,\n"
" isRequired=$required$)\n");
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
printer->Print(variables_,
"@com.google.protobuf.ProtoPresenceCheckedField(\n"
" presenceBitsId=$bit_field_id$,\n"
@ -202,7 +202,7 @@ void ImmutableEnumFieldLiteGenerator::GenerateMembers(
}
printer->Print(variables_, "private int $name$_;\n");
PrintExtraFieldInfo(variables_, printer);
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(
variables_,
@ -212,7 +212,7 @@ void ImmutableEnumFieldLiteGenerator::GenerateMembers(
"}\n");
printer->Annotate("{", "}", descriptor_);
}
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(
variables_,
@ -232,7 +232,7 @@ void ImmutableEnumFieldLiteGenerator::GenerateMembers(
printer->Annotate("{", "}", descriptor_);
// Generate private setters for the builder to proxy into.
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, SETTER);
printer->Print(variables_,
"private void set$capitalized_name$Value(int value) {\n"
@ -256,7 +256,7 @@ void ImmutableEnumFieldLiteGenerator::GenerateMembers(
void ImmutableEnumFieldLiteGenerator::GenerateBuilderMembers(
io::Printer* printer) const {
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(
variables_,
@ -266,7 +266,7 @@ void ImmutableEnumFieldLiteGenerator::GenerateBuilderMembers(
"}\n");
printer->Annotate("{", "}", descriptor_);
}
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(
variables_,
@ -327,7 +327,7 @@ void ImmutableEnumFieldLiteGenerator::GenerateKotlinDslMembers(
" $kt_dsl_builder$.${$set$capitalized_name$$}$(value)\n"
" }\n");
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
printer->Print(
variables_,
"$kt_deprecation$public var $kt_name$Value: kotlin.Int\n"
@ -346,7 +346,7 @@ void ImmutableEnumFieldLiteGenerator::GenerateKotlinDslMembers(
" $kt_dsl_builder$.${$clear$capitalized_name$$}$()\n"
"}\n");
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER,
/* builder */ false, /* kdoc */ true);
printer->Print(
@ -369,7 +369,7 @@ void ImmutableEnumFieldLiteGenerator::GenerateFieldInfo(
WriteIntToUtf16CharSequence(descriptor_->number(), output);
WriteIntToUtf16CharSequence(GetExperimentalJavaFieldType(descriptor_),
output);
if (HasHasbit(descriptor_)) {
if (descriptor_->has_presence()) {
WriteIntToUtf16CharSequence(messageBitIndex_, output);
}
printer->Print(variables_, "\"$name$_\",\n");
@ -400,7 +400,7 @@ ImmutableEnumOneofFieldLiteGenerator::~ImmutableEnumOneofFieldLiteGenerator() {}
void ImmutableEnumOneofFieldLiteGenerator::GenerateMembers(
io::Printer* printer) const {
PrintExtraFieldInfo(variables_, printer);
ABSL_DCHECK(HasHazzer(descriptor_));
ABSL_DCHECK(descriptor_->has_presence());
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"@java.lang.Override\n"
@ -409,7 +409,7 @@ void ImmutableEnumOneofFieldLiteGenerator::GenerateMembers(
"}\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(
variables_,
@ -436,7 +436,7 @@ void ImmutableEnumOneofFieldLiteGenerator::GenerateMembers(
printer->Annotate("{", "}", descriptor_);
// Generate private setters for the builder to proxy into.
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, SETTER);
printer->Print(variables_,
"private void set$capitalized_name$Value(int value) {\n"
@ -476,7 +476,7 @@ void ImmutableEnumOneofFieldLiteGenerator::GenerateFieldInfo(
void ImmutableEnumOneofFieldLiteGenerator::GenerateBuilderMembers(
io::Printer* printer) const {
ABSL_DCHECK(HasHazzer(descriptor_));
ABSL_DCHECK(descriptor_->has_presence());
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"@java.lang.Override\n"
@ -485,7 +485,7 @@ void ImmutableEnumOneofFieldLiteGenerator::GenerateBuilderMembers(
"}\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, GETTER);
printer->Print(
variables_,
@ -571,7 +571,7 @@ void RepeatedImmutableEnumFieldLiteGenerator::GenerateInterfaceMembers(
variables_,
"$deprecation$$type$ ${$get$capitalized_name$$}$(int index);\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, LIST_GETTER);
printer->Print(variables_,
"$deprecation$java.util.List<java.lang.Integer>\n"
@ -641,7 +641,7 @@ void RepeatedImmutableEnumFieldLiteGenerator::GenerateMembers(
" return result == null ? $unknown$ : result;\n"
"}\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, LIST_GETTER);
printer->Print(variables_,
"@java.lang.Override\n"
@ -707,7 +707,7 @@ void RepeatedImmutableEnumFieldLiteGenerator::GenerateMembers(
" $name$_ = emptyIntList();\n"
"}\n");
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, SETTER);
printer->Print(variables_,
"private void set$capitalized_name$Value(\n"
@ -740,7 +740,7 @@ void RepeatedImmutableEnumFieldLiteGenerator::GenerateFieldInfo(
WriteIntToUtf16CharSequence(GetExperimentalJavaFieldType(descriptor_),
output);
printer->Print(variables_, "\"$name$_\",\n");
if (!SupportUnknownEnumValue(descriptor_->file())) {
if (!SupportUnknownEnumValue(descriptor_)) {
PrintEnumVerifierLogic(printer, descriptor_, variables_,
/*var_name=*/"$type$",
/*terminating_string=*/",\n",
@ -815,7 +815,7 @@ void RepeatedImmutableEnumFieldLiteGenerator::GenerateBuilderMembers(
"}\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(descriptor_)) {
WriteFieldEnumValueAccessorDocComment(printer, descriptor_, LIST_GETTER);
printer->Print(variables_,
"@java.lang.Override\n"

@ -97,7 +97,7 @@ void EnumLiteGenerator::Generate(io::Printer* printer) {
printer->Annotate("name", canonical_values_[i]);
}
if (SupportUnknownEnumValue(descriptor_->file())) {
if (!descriptor_->is_closed()) {
printer->Print("${$UNRECOGNIZED$}$(-1),\n", "{", "", "}", "");
printer->Annotate("{", "}", descriptor_);
}
@ -142,7 +142,7 @@ void EnumLiteGenerator::Generate(io::Printer* printer) {
"\n"
"@java.lang.Override\n"
"public final int getNumber() {\n");
if (SupportUnknownEnumValue(descriptor_->file())) {
if (!descriptor_->is_closed()) {
printer->Print(
" if (this == UNRECOGNIZED) {\n"
" throw new java.lang.IllegalArgumentException(\n"
@ -235,7 +235,7 @@ void EnumLiteGenerator::Generate(io::Printer* printer) {
" result.append(getClass().getName()).append('@')\n"
" .append(java.lang.Integer.toHexString(\n"
" java.lang.System.identityHashCode(this)));\n");
if (SupportUnknownEnumValue(descriptor_->file())) {
if (!descriptor_->is_closed()) {
printer->Print(
" if (this != UNRECOGNIZED) {\n"
" result.append(\" number=\").append(getNumber());\n"

@ -932,7 +932,7 @@ int GetExperimentalJavaFieldType(const FieldDescriptor* field) {
}
if (field->is_map()) {
if (!SupportUnknownEnumValue(field)) {
if (!SupportUnknownEnumValue(MapValueField(field))) {
const FieldDescriptor* value = field->message_type()->map_value();
if (GetJavaType(value) == JAVATYPE_ENUM) {
extra_bits |= kMapWithProto2EnumValue;
@ -977,6 +977,20 @@ void EscapeUtf16ToString(uint16_t code, std::string* output) {
}
}
const FieldDescriptor* MapKeyField(const FieldDescriptor* descriptor) {
ABSL_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, descriptor->type());
const Descriptor* message = descriptor->message_type();
ABSL_CHECK(message->options().map_entry());
return message->map_key();
}
const FieldDescriptor* MapValueField(const FieldDescriptor* descriptor) {
ABSL_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, descriptor->type());
const Descriptor* message = descriptor->message_type();
ABSL_CHECK(message->options().map_entry());
return message->map_value();
}
} // namespace java
} // namespace compiler
} // namespace protobuf

@ -354,28 +354,19 @@ inline bool HasPackedFields(const Descriptor* descriptor) {
// them has a required field. Return true if a required field is found.
bool HasRequiredFields(const Descriptor* descriptor);
inline bool IsProto2(const FileDescriptor* descriptor) {
return descriptor->syntax() == FileDescriptor::SYNTAX_PROTO2;
}
inline bool IsRealOneof(const FieldDescriptor* descriptor) {
return descriptor->containing_oneof() &&
!descriptor->containing_oneof()->is_synthetic();
}
inline bool HasHazzer(const FieldDescriptor* descriptor) {
return !descriptor->is_repeated() &&
(descriptor->message_type() || descriptor->has_optional_keyword() ||
IsProto2(descriptor->file()) || IsRealOneof(descriptor));
}
inline bool HasHasbit(const FieldDescriptor* descriptor) {
// Note that currently message fields inside oneofs have hasbits. This is
// surprising, as the oneof case should avoid any need for a hasbit. But if
// you change this method to remove hasbits for oneofs, a few tests fail.
// TODO(b/124347790): remove hasbits for oneofs
return !descriptor->is_repeated() &&
(descriptor->has_optional_keyword() || IsProto2(descriptor->file()));
(descriptor->has_optional_keyword() ||
descriptor->file()->syntax() == FileDescriptor::SYNTAX_PROTO2);
}
// Whether generate classes expose public PARSER instances.
@ -387,12 +378,8 @@ inline bool ExposePublicParser(const FileDescriptor* descriptor) {
// Whether unknown enum values are kept (i.e., not stored in UnknownFieldSet
// but in the message and can be queried using additional getters that return
// ints.
inline bool SupportUnknownEnumValue(const FileDescriptor* descriptor) {
return descriptor->syntax() == FileDescriptor::SYNTAX_PROTO3;
}
inline bool SupportUnknownEnumValue(const FieldDescriptor* field) {
return field->file()->syntax() == FileDescriptor::SYNTAX_PROTO3;
return !field->legacy_enum_field_treated_as_closed();
}
// Check whether a message has repeated fields.
@ -415,7 +402,7 @@ inline bool IsWrappersProtoFile(const FileDescriptor* descriptor) {
}
inline bool CheckUtf8(const FieldDescriptor* descriptor) {
return descriptor->file()->syntax() == FileDescriptor::SYNTAX_PROTO3 ||
return descriptor->requires_utf8_validation() ||
descriptor->file()->options().java_string_check_utf8();
}
@ -448,6 +435,11 @@ int GetExperimentalJavaFieldType(const FieldDescriptor* field);
// and the first field number that are not in the table part
std::pair<int, int> GetTableDrivenNumberOfEntriesAndLookUpStartFieldNumber(
const FieldDescriptor** fields, int count);
const FieldDescriptor* MapKeyField(const FieldDescriptor* descriptor);
const FieldDescriptor* MapValueField(const FieldDescriptor* descriptor);
} // namespace java
} // namespace compiler
} // namespace protobuf

@ -47,20 +47,6 @@ namespace java {
namespace {
const FieldDescriptor* KeyField(const FieldDescriptor* descriptor) {
ABSL_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, descriptor->type());
const Descriptor* message = descriptor->message_type();
ABSL_CHECK(message->options().map_entry());
return message->map_key();
}
const FieldDescriptor* ValueField(const FieldDescriptor* descriptor) {
ABSL_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, descriptor->type());
const Descriptor* message = descriptor->message_type();
ABSL_CHECK(message->options().map_entry());
return message->map_value();
}
std::string TypeName(const FieldDescriptor* field,
ClassNameResolver* name_resolver, bool boxed) {
if (GetJavaType(field) == JAVATYPE_MESSAGE) {
@ -98,8 +84,8 @@ void SetMessageVariables(
(*variables)["type"] =
name_resolver->GetImmutableClassName(descriptor->message_type());
const FieldDescriptor* key = KeyField(descriptor);
const FieldDescriptor* value = ValueField(descriptor);
const FieldDescriptor* key = MapKeyField(descriptor);
const FieldDescriptor* value = MapValueField(descriptor);
const JavaType keyJavaType = GetJavaType(key);
const JavaType valueJavaType = GetJavaType(value);
@ -147,7 +133,7 @@ void SetMessageVariables(
{"value_enum_type_pass_through_nullness",
absl::StrCat(pass_through_nullness, (*variables)["value_enum_type"])});
if (SupportUnknownEnumValue(descriptor->file())) {
if (SupportUnknownEnumValue(value)) {
// Map unknown values to a special UNRECOGNIZED value if supported.
variables->insert(
{"unrecognized_value",
@ -244,7 +230,9 @@ void ImmutableMapFieldGenerator::GenerateInterfaceMembers(
"$deprecation$boolean ${$contains$capitalized_name$$}$(\n"
" $key_type$ key);\n");
printer->Annotate("{", "}", descriptor_);
if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
const FieldDescriptor* value = MapValueField(descriptor_);
if (GetJavaType(value) == JAVATYPE_ENUM) {
if (context_->options().opensource_runtime) {
printer->Print(variables_,
"/**\n"
@ -275,7 +263,7 @@ void ImmutableMapFieldGenerator::GenerateInterfaceMembers(
"$deprecation$$value_enum_type$ ${$get$capitalized_name$OrThrow$}$(\n"
" $key_type$ key);\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(value)) {
printer->Print(
variables_,
"/**\n"
@ -362,7 +350,7 @@ void ImmutableMapFieldGenerator::GenerateMembers(io::Printer* printer) const {
" }\n"
" return $name$_;\n"
"}\n");
if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
if (GetJavaType(MapValueField(descriptor_)) == JAVATYPE_ENUM) {
printer->Print(
variables_,
"private static final\n"
@ -434,7 +422,8 @@ void ImmutableMapFieldGenerator::GenerateBuilderMembers(
"}\n");
printer->Annotate("{", "}", descriptor_);
if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
const FieldDescriptor* value = MapValueField(descriptor_);
if (GetJavaType(value) == JAVATYPE_ENUM) {
if (context_->options().opensource_runtime) {
printer->Print(
variables_,
@ -478,7 +467,7 @@ void ImmutableMapFieldGenerator::GenerateBuilderMembers(
"}\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(value)) {
if (context_->options().opensource_runtime) {
printer->Print(
variables_,
@ -585,7 +574,8 @@ void ImmutableMapFieldGenerator::GenerateMapGetters(
"}\n");
printer->Annotate("{", "}", descriptor_);
if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
const FieldDescriptor* value = MapValueField(descriptor_);
if (GetJavaType(value) == JAVATYPE_ENUM) {
if (context_->options().opensource_runtime) {
printer->Print(
variables_,
@ -645,7 +635,7 @@ void ImmutableMapFieldGenerator::GenerateMapGetters(
"}\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(value)) {
printer->Print(
variables_,
"/**\n"
@ -870,8 +860,8 @@ void ImmutableMapFieldGenerator::GenerateBuildingCode(
void ImmutableMapFieldGenerator::GenerateBuilderParsingCode(
io::Printer* printer) const {
if (!SupportUnknownEnumValue(descriptor_->file()) &&
GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
const FieldDescriptor* value = MapValueField(descriptor_);
if (!SupportUnknownEnumValue(value) && GetJavaType(value) == JAVATYPE_ENUM) {
printer->Print(
variables_,
"com.google.protobuf.ByteString bytes = input.readBytes();\n"

@ -49,20 +49,6 @@ namespace java {
namespace {
const FieldDescriptor* KeyField(const FieldDescriptor* descriptor) {
ABSL_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, descriptor->type());
const Descriptor* message = descriptor->message_type();
ABSL_CHECK(message->options().map_entry());
return message->map_key();
}
const FieldDescriptor* ValueField(const FieldDescriptor* descriptor) {
ABSL_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, descriptor->type());
const Descriptor* message = descriptor->message_type();
ABSL_CHECK(message->options().map_entry());
return message->map_value();
}
std::string TypeName(const FieldDescriptor* field,
ClassNameResolver* name_resolver, bool boxed) {
if (GetJavaType(field) == JAVATYPE_MESSAGE) {
@ -100,8 +86,8 @@ void SetMessageVariables(
ClassNameResolver* name_resolver = context->GetNameResolver();
(*variables)["type"] =
name_resolver->GetImmutableClassName(descriptor->message_type());
const FieldDescriptor* key = KeyField(descriptor);
const FieldDescriptor* value = ValueField(descriptor);
const FieldDescriptor* key = MapKeyField(descriptor);
const FieldDescriptor* value = MapValueField(descriptor);
const JavaType keyJavaType = GetJavaType(key);
const JavaType valueJavaType = GetJavaType(value);
@ -144,7 +130,7 @@ void SetMessageVariables(
{"value_enum_type_pass_through_nullness",
absl::StrCat(pass_through_nullness, (*variables)["value_enum_type"])});
if (SupportUnknownEnumValue(descriptor->file())) {
if (SupportUnknownEnumValue(value)) {
// Map unknown values to a special UNRECOGNIZED value if supported.
variables->insert(
{"unrecognized_value",
@ -217,7 +203,8 @@ void ImmutableMapFieldLiteGenerator::GenerateInterfaceMembers(
"$deprecation$boolean ${$contains$capitalized_name$$}$(\n"
" $key_type$ key);\n");
printer->Annotate("{", "}", descriptor_);
if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
const FieldDescriptor* value = MapValueField(descriptor_);
if (GetJavaType(value) == JAVATYPE_ENUM) {
if (context_->options().opensource_runtime) {
printer->Print(variables_,
"/**\n"
@ -248,7 +235,7 @@ void ImmutableMapFieldLiteGenerator::GenerateInterfaceMembers(
"$deprecation$$value_enum_type$ ${$get$capitalized_name$OrThrow$}$(\n"
" $key_type$ key);\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(value)) {
printer->Print(
variables_,
"/**\n"
@ -363,7 +350,9 @@ void ImmutableMapFieldLiteGenerator::GenerateMembers(
" return internalGet$capitalized_name$().containsKey(key);\n"
"}\n");
printer->Annotate("{", "}", descriptor_);
if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
const FieldDescriptor* value = MapValueField(descriptor_);
if (GetJavaType(value) == JAVATYPE_ENUM) {
printer->Print(
variables_,
"private static final\n"
@ -432,7 +421,7 @@ void ImmutableMapFieldLiteGenerator::GenerateMembers(
" return $name$ValueConverter.doForward(map.get(key));\n"
"}\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(value)) {
printer->Print(
variables_,
"/**\n"
@ -545,7 +534,7 @@ void ImmutableMapFieldLiteGenerator::GenerateMembers(
}
// Generate private setters for the builder to proxy into.
if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
if (GetJavaType(value) == JAVATYPE_ENUM) {
WriteFieldDocComment(printer, descriptor_);
printer->Print(
variables_,
@ -556,7 +545,7 @@ void ImmutableMapFieldLiteGenerator::GenerateMembers(
" internalGetMutable$capitalized_name$(),\n"
" $name$ValueConverter);\n"
"}\n");
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(value)) {
WriteFieldDocComment(printer, descriptor_);
printer->Print(
variables_,
@ -583,9 +572,9 @@ void ImmutableMapFieldLiteGenerator::GenerateFieldInfo(
printer->Print(variables_,
"\"$name$_\",\n"
"$default_entry$,\n");
if (!SupportUnknownEnumValue(descriptor_) &&
GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
PrintEnumVerifierLogic(printer, ValueField(descriptor_), variables_,
const FieldDescriptor* value = MapValueField(descriptor_);
if (!SupportUnknownEnumValue(value) && GetJavaType(value) == JAVATYPE_ENUM) {
PrintEnumVerifierLogic(printer, MapValueField(descriptor_), variables_,
/*var_name=*/"$value_enum_type$",
/*terminating_string=*/",\n",
/*enforce_lite=*/context_->EnforceLite());
@ -631,7 +620,8 @@ void ImmutableMapFieldLiteGenerator::GenerateBuilderMembers(
" return this;\n"
"}\n");
printer->Annotate("{", "}", descriptor_);
if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
const FieldDescriptor* value = MapValueField(descriptor_);
if (GetJavaType(value) == JAVATYPE_ENUM) {
if (context_->options().opensource_runtime) {
printer->Print(
variables_,
@ -711,7 +701,7 @@ void ImmutableMapFieldLiteGenerator::GenerateBuilderMembers(
" return this;\n"
"}\n");
printer->Annotate("{", "}", descriptor_);
if (SupportUnknownEnumValue(descriptor_->file())) {
if (SupportUnknownEnumValue(value)) {
printer->Print(
variables_,
"/**\n"

@ -507,7 +507,7 @@ void ImmutableMessageLiteGenerator::GenerateDynamicMethodNewBuildMessageInfo(
std::vector<uint16_t> chars;
int flags = 0;
if (IsProto2(descriptor_->file())) {
if (descriptor_->file()->syntax() == FileDescriptor::SYNTAX_PROTO2) {
flags |= 0x1;
}
if (descriptor_->options().message_set_wire_format()) {

@ -141,7 +141,7 @@ void SetPrimitiveVariables(
}
(*variables)["on_changed"] = "onChanged();";
if (HasHasbit(descriptor)) {
if (descriptor->has_presence()) {
// For singular messages and builders, one bit is used for the hasField bit.
(*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex);
// Note that these have a trailing ";".
@ -221,7 +221,7 @@ int ImmutablePrimitiveFieldGenerator::GetNumBitsForBuilder() const { return 1; }
void ImmutablePrimitiveFieldGenerator::GenerateInterfaceMembers(
io::Printer* printer) const {
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"$deprecation$boolean has$capitalized_name$();\n");
@ -234,7 +234,7 @@ void ImmutablePrimitiveFieldGenerator::GenerateMembers(
io::Printer* printer) const {
printer->Print(variables_, "private $field_type$ $name$_ = $default$;\n");
PrintExtraFieldInfo(variables_, printer);
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(
variables_,
@ -258,7 +258,7 @@ void ImmutablePrimitiveFieldGenerator::GenerateBuilderMembers(
io::Printer* printer) const {
printer->Print(variables_, "private $field_type$ $name$_ $default_init$;\n");
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(
variables_,
@ -332,7 +332,7 @@ void ImmutablePrimitiveFieldGenerator::GenerateKotlinDslMembers(
" $kt_dsl_builder$.${$clear$capitalized_name$$}$()\n"
"}\n");
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER,
/* builder */ false, /* kdoc */ true);
printer->Print(
@ -363,7 +363,7 @@ void ImmutablePrimitiveFieldGenerator::GenerateBuilderClearCode(
void ImmutablePrimitiveFieldGenerator::GenerateMergingCode(
io::Printer* printer) const {
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
printer->Print(variables_,
"if (other.has$capitalized_name$()) {\n"
" set$capitalized_name$(other.get$capitalized_name$());\n"
@ -527,7 +527,7 @@ ImmutablePrimitiveOneofFieldGenerator::
void ImmutablePrimitiveOneofFieldGenerator::GenerateMembers(
io::Printer* printer) const {
PrintExtraFieldInfo(variables_, printer);
ABSL_DCHECK(HasHazzer(descriptor_));
ABSL_DCHECK(descriptor_->has_presence());
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"@java.lang.Override\n"
@ -550,7 +550,7 @@ void ImmutablePrimitiveOneofFieldGenerator::GenerateMembers(
void ImmutablePrimitiveOneofFieldGenerator::GenerateBuilderMembers(
io::Printer* printer) const {
ABSL_DCHECK(HasHazzer(descriptor_));
ABSL_DCHECK(descriptor_->has_presence());
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"$deprecation$public boolean ${$has$capitalized_name$$}$() {\n"

@ -151,7 +151,7 @@ void SetPrimitiveVariables(
(*variables)["fixed_size"] = absl::StrCat(fixed_size);
}
if (HasHasbit(descriptor)) {
if (descriptor->has_presence()) {
// For singular messages and builders, one bit is used for the hasField bit.
(*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex);
@ -219,7 +219,7 @@ int ImmutablePrimitiveFieldLiteGenerator::GetNumBitsForMessage() const {
void ImmutablePrimitiveFieldLiteGenerator::GenerateInterfaceMembers(
io::Printer* printer) const {
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"$deprecation$boolean has$capitalized_name$();\n");
@ -246,7 +246,7 @@ void ImmutablePrimitiveFieldLiteGenerator::GenerateMembers(
" fieldNumber=$number$,\n"
" type=com.google.protobuf.FieldType.$annotation_field_type$,\n"
" isRequired=$required$)\n");
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
printer->Print(variables_,
"@com.google.protobuf.ProtoPresenceCheckedField(\n"
" presenceBitsId=$bit_field_id$,\n"
@ -255,7 +255,7 @@ void ImmutablePrimitiveFieldLiteGenerator::GenerateMembers(
}
printer->Print(variables_, "private $field_type$ $name$_;\n");
PrintExtraFieldInfo(variables_, printer);
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(
variables_,
@ -301,7 +301,7 @@ void ImmutablePrimitiveFieldLiteGenerator::GenerateMembers(
void ImmutablePrimitiveFieldLiteGenerator::GenerateBuilderMembers(
io::Printer* printer) const {
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(
variables_,
@ -362,7 +362,7 @@ void ImmutablePrimitiveFieldLiteGenerator::GenerateKotlinDslMembers(
" $kt_dsl_builder$.${$clear$capitalized_name$$}$()\n"
"}\n");
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER,
/* builder */ false, /* kdoc */ true);
printer->Print(
@ -378,7 +378,7 @@ void ImmutablePrimitiveFieldLiteGenerator::GenerateFieldInfo(
WriteIntToUtf16CharSequence(descriptor_->number(), output);
WriteIntToUtf16CharSequence(GetExperimentalJavaFieldType(descriptor_),
output);
if (HasHasbit(descriptor_)) {
if (descriptor_->has_presence()) {
WriteIntToUtf16CharSequence(messageBitIndex_, output);
}
printer->Print(variables_, "\"$name$_\",\n");
@ -416,7 +416,7 @@ ImmutablePrimitiveOneofFieldLiteGenerator::
void ImmutablePrimitiveOneofFieldLiteGenerator::GenerateMembers(
io::Printer* printer) const {
PrintExtraFieldInfo(variables_, printer);
ABSL_DCHECK(HasHazzer(descriptor_));
ABSL_DCHECK(descriptor_->has_presence());
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"@java.lang.Override\n"
@ -464,7 +464,7 @@ void ImmutablePrimitiveOneofFieldLiteGenerator::GenerateFieldInfo(
void ImmutablePrimitiveOneofFieldLiteGenerator::GenerateBuilderMembers(
io::Printer* printer) const {
ABSL_DCHECK(HasHazzer(descriptor_));
ABSL_DCHECK(descriptor_->has_presence());
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"@java.lang.Override\n"

@ -102,7 +102,7 @@ void SetPrimitiveVariables(
: ""});
(*variables)["on_changed"] = "onChanged();";
if (HasHasbit(descriptor)) {
if (descriptor->has_presence()) {
// For singular messages and builders, one bit is used for the hasField bit.
(*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex);
(*variables)["set_has_field_bit_to_local"] =
@ -197,7 +197,7 @@ int ImmutableStringFieldGenerator::GetNumBitsForBuilder() const { return 1; }
// repeated fields, the logic is done in LazyStringArrayList.
void ImmutableStringFieldGenerator::GenerateInterfaceMembers(
io::Printer* printer) const {
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"$deprecation$boolean has$capitalized_name$();\n");
@ -218,7 +218,7 @@ void ImmutableStringFieldGenerator::GenerateMembers(
"private volatile java.lang.Object $name$_ = $default$;\n");
PrintExtraFieldInfo(variables_, printer);
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(
variables_,
@ -277,7 +277,7 @@ void ImmutableStringFieldGenerator::GenerateBuilderMembers(
io::Printer* printer) const {
printer->Print(variables_,
"private java.lang.Object $name$_ $default_init$;\n");
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(
variables_,
@ -395,7 +395,7 @@ void ImmutableStringFieldGenerator::GenerateKotlinDslMembers(
" $kt_dsl_builder$.${$clear$capitalized_name$$}$()\n"
"}\n");
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER,
/* builder */ false, /* kdoc */ true);
printer->Print(
@ -423,7 +423,7 @@ void ImmutableStringFieldGenerator::GenerateBuilderClearCode(
void ImmutableStringFieldGenerator::GenerateMergingCode(
io::Printer* printer) const {
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
// Allow a slight breach of abstraction here in order to avoid forcing
// all string fields to Strings when copying fields from a Message.
printer->Print(variables_,
@ -517,7 +517,7 @@ ImmutableStringOneofFieldGenerator::~ImmutableStringOneofFieldGenerator() {}
void ImmutableStringOneofFieldGenerator::GenerateMembers(
io::Printer* printer) const {
PrintExtraFieldInfo(variables_, printer);
ABSL_DCHECK(HasHazzer(descriptor_));
ABSL_DCHECK(descriptor_->has_presence());
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"$deprecation$public boolean ${$has$capitalized_name$$}$() {\n"
@ -581,7 +581,7 @@ void ImmutableStringOneofFieldGenerator::GenerateMembers(
void ImmutableStringOneofFieldGenerator::GenerateBuilderMembers(
io::Printer* printer) const {
ABSL_DCHECK(HasHazzer(descriptor_));
ABSL_DCHECK(descriptor_->has_presence());
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"@java.lang.Override\n"

@ -97,7 +97,7 @@ void SetPrimitiveVariables(
(*variables)["enforce_utf8"] = CheckUtf8(descriptor) ? "true" : "false";
}
if (HasHasbit(descriptor)) {
if (descriptor->has_presence()) {
if (!context->options().opensource_runtime) {
(*variables)["bit_field_id"] = absl::StrCat(messageBitIndex / 32);
(*variables)["bit_field_name"] = GetBitFieldNameForBit(messageBitIndex);
@ -179,7 +179,7 @@ int ImmutableStringFieldLiteGenerator::GetNumBitsForMessage() const {
// shouldn't be necessary or used on devices.
void ImmutableStringFieldLiteGenerator::GenerateInterfaceMembers(
io::Printer* printer) const {
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"$deprecation$boolean ${$has$capitalized_name$$}$();\n");
@ -207,7 +207,7 @@ void ImmutableStringFieldLiteGenerator::GenerateMembers(
" type=com.google.protobuf.FieldType.$annotation_field_type$,\n"
" isRequired=$required$,\n"
" isEnforceUtf8=$enforce_utf8$)\n");
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
printer->Print(variables_,
"@com.google.protobuf.ProtoPresenceCheckedField(\n"
" presenceBitsId=$bit_field_id$,\n"
@ -217,7 +217,7 @@ void ImmutableStringFieldLiteGenerator::GenerateMembers(
printer->Print(variables_, "private java.lang.String $name$_;\n");
PrintExtraFieldInfo(variables_, printer);
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(
variables_,
@ -279,7 +279,7 @@ void ImmutableStringFieldLiteGenerator::GenerateMembers(
void ImmutableStringFieldLiteGenerator::GenerateBuilderMembers(
io::Printer* printer) const {
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(
variables_,
@ -361,7 +361,7 @@ void ImmutableStringFieldLiteGenerator::GenerateKotlinDslMembers(
" $kt_dsl_builder$.${$clear$capitalized_name$$}$()\n"
"}\n");
if (HasHazzer(descriptor_)) {
if (descriptor_->has_presence()) {
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER,
/* builder */ false, /* kdoc */ true);
printer->Print(
@ -377,7 +377,7 @@ void ImmutableStringFieldLiteGenerator::GenerateFieldInfo(
WriteIntToUtf16CharSequence(descriptor_->number(), output);
WriteIntToUtf16CharSequence(GetExperimentalJavaFieldType(descriptor_),
output);
if (HasHasbit(descriptor_)) {
if (descriptor_->has_presence()) {
WriteIntToUtf16CharSequence(messageBitIndex_, output);
}
printer->Print(variables_, "\"$name$_\",\n");
@ -408,7 +408,7 @@ ImmutableStringOneofFieldLiteGenerator::
void ImmutableStringOneofFieldLiteGenerator::GenerateMembers(
io::Printer* printer) const {
PrintExtraFieldInfo(variables_, printer);
ABSL_DCHECK(HasHazzer(descriptor_));
ABSL_DCHECK(descriptor_->has_presence());
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"@java.lang.Override\n"
@ -486,7 +486,7 @@ void ImmutableStringOneofFieldLiteGenerator::GenerateFieldInfo(
void ImmutableStringOneofFieldLiteGenerator::GenerateBuilderMembers(
io::Printer* printer) const {
ABSL_DCHECK(HasHazzer(descriptor_));
ABSL_DCHECK(descriptor_->has_presence());
WriteFieldAccessorDocComment(printer, descriptor_, HAZZER);
printer->Print(variables_,
"@java.lang.Override\n"

Loading…
Cancel
Save