From ad77e1ab2f6b14550ff990542dcfbc013394d47a Mon Sep 17 00:00:00 2001 From: Mike Kruskal Date: Fri, 3 Mar 2023 13:13:52 -0800 Subject: [PATCH] Migrate syntax reflection to new feature-based system. PiperOrigin-RevId: 513904931 --- src/google/protobuf/compiler/java/enum.cc | 8 +-- .../protobuf/compiler/java/enum_field.cc | 50 +++++++++---------- .../protobuf/compiler/java/enum_field_lite.cc | 46 ++++++++--------- .../protobuf/compiler/java/enum_lite.cc | 6 +-- src/google/protobuf/compiler/java/helpers.cc | 16 +++++- src/google/protobuf/compiler/java/helpers.h | 26 ++++------ .../protobuf/compiler/java/map_field.cc | 42 ++++++---------- .../protobuf/compiler/java/map_field_lite.cc | 46 +++++++---------- .../protobuf/compiler/java/message_lite.cc | 2 +- .../protobuf/compiler/java/primitive_field.cc | 16 +++--- .../compiler/java/primitive_field_lite.cc | 18 +++---- .../protobuf/compiler/java/string_field.cc | 16 +++--- .../compiler/java/string_field_lite.cc | 18 +++---- 13 files changed, 148 insertions(+), 162 deletions(-) diff --git a/src/google/protobuf/compiler/java/enum.cc b/src/google/protobuf/compiler/java/enum.cc index 84c99e6779..f64d89e913 100644 --- a/src/google/protobuf/compiler/java/enum.cc +++ b/src/google/protobuf/compiler/java/enum.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" diff --git a/src/google/protobuf/compiler/java/enum_field.cc b/src/google/protobuf/compiler/java/enum_field.cc index 59d56d4a35..c45f1a4c2a 100644 --- a/src/google/protobuf/compiler/java/enum_field.cc +++ b/src/google/protobuf/compiler/java/enum_field.cc @@ -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\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\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" diff --git a/src/google/protobuf/compiler/java/enum_field_lite.cc b/src/google/protobuf/compiler/java/enum_field_lite.cc index fc3cb1fa3f..011f5c7a06 100644 --- a/src/google/protobuf/compiler/java/enum_field_lite.cc +++ b/src/google/protobuf/compiler/java/enum_field_lite.cc @@ -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\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" diff --git a/src/google/protobuf/compiler/java/enum_lite.cc b/src/google/protobuf/compiler/java/enum_lite.cc index 5d10a684bc..abadc78df9 100644 --- a/src/google/protobuf/compiler/java/enum_lite.cc +++ b/src/google/protobuf/compiler/java/enum_lite.cc @@ -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" diff --git a/src/google/protobuf/compiler/java/helpers.cc b/src/google/protobuf/compiler/java/helpers.cc index 8c3784d2e6..eef40ee3ba 100644 --- a/src/google/protobuf/compiler/java/helpers.cc +++ b/src/google/protobuf/compiler/java/helpers.cc @@ -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 diff --git a/src/google/protobuf/compiler/java/helpers.h b/src/google/protobuf/compiler/java/helpers.h index 0ebb3b9ebe..185c89c218 100644 --- a/src/google/protobuf/compiler/java/helpers.h +++ b/src/google/protobuf/compiler/java/helpers.h @@ -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 GetTableDrivenNumberOfEntriesAndLookUpStartFieldNumber( const FieldDescriptor** fields, int count); + +const FieldDescriptor* MapKeyField(const FieldDescriptor* descriptor); + +const FieldDescriptor* MapValueField(const FieldDescriptor* descriptor); + } // namespace java } // namespace compiler } // namespace protobuf diff --git a/src/google/protobuf/compiler/java/map_field.cc b/src/google/protobuf/compiler/java/map_field.cc index 13354c4ad6..041690b64f 100644 --- a/src/google/protobuf/compiler/java/map_field.cc +++ b/src/google/protobuf/compiler/java/map_field.cc @@ -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" diff --git a/src/google/protobuf/compiler/java/map_field_lite.cc b/src/google/protobuf/compiler/java/map_field_lite.cc index ca4091a5ab..8e61a5b145 100644 --- a/src/google/protobuf/compiler/java/map_field_lite.cc +++ b/src/google/protobuf/compiler/java/map_field_lite.cc @@ -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" diff --git a/src/google/protobuf/compiler/java/message_lite.cc b/src/google/protobuf/compiler/java/message_lite.cc index 721a463c3d..b23f0e0101 100644 --- a/src/google/protobuf/compiler/java/message_lite.cc +++ b/src/google/protobuf/compiler/java/message_lite.cc @@ -507,7 +507,7 @@ void ImmutableMessageLiteGenerator::GenerateDynamicMethodNewBuildMessageInfo( std::vector chars; int flags = 0; - if (IsProto2(descriptor_->file())) { + if (descriptor_->file()->syntax() == FileDescriptor::SYNTAX_PROTO2) { flags |= 0x1; } if (descriptor_->options().message_set_wire_format()) { diff --git a/src/google/protobuf/compiler/java/primitive_field.cc b/src/google/protobuf/compiler/java/primitive_field.cc index 15a1edb46e..b30faf6b1a 100644 --- a/src/google/protobuf/compiler/java/primitive_field.cc +++ b/src/google/protobuf/compiler/java/primitive_field.cc @@ -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" diff --git a/src/google/protobuf/compiler/java/primitive_field_lite.cc b/src/google/protobuf/compiler/java/primitive_field_lite.cc index b7197b89ad..95e6034d67 100644 --- a/src/google/protobuf/compiler/java/primitive_field_lite.cc +++ b/src/google/protobuf/compiler/java/primitive_field_lite.cc @@ -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" diff --git a/src/google/protobuf/compiler/java/string_field.cc b/src/google/protobuf/compiler/java/string_field.cc index 0913e0a3ee..ce06628181 100644 --- a/src/google/protobuf/compiler/java/string_field.cc +++ b/src/google/protobuf/compiler/java/string_field.cc @@ -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" diff --git a/src/google/protobuf/compiler/java/string_field_lite.cc b/src/google/protobuf/compiler/java/string_field_lite.cc index 274df53790..1e5dc6b610 100644 --- a/src/google/protobuf/compiler/java/string_field_lite.cc +++ b/src/google/protobuf/compiler/java/string_field_lite.cc @@ -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"