Migrate away from examining the syntax of a proto file via reflection. PiperOrigin-RevId: 493086551
diff --git a/src/google/protobuf/compiler/cpp/message.cc b/src/google/protobuf/compiler/cpp/message.cc index 58beb66..1c4d95b 100644 --- a/src/google/protobuf/compiler/cpp/message.cc +++ b/src/google/protobuf/compiler/cpp/message.cc
@@ -252,14 +252,7 @@ // Does the given field have a has_$name$() method? bool HasHasMethod(const FieldDescriptor* field) { - if (!IsProto3(field->file())) { - // In proto1/proto2, every field has a has_$name$() method. - return true; - } - // For message types without true field presence, only fields with a message - // type or inside an one-of have a has_$name$() method. - return field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE || - field->has_optional_keyword() || field->real_containing_oneof(); + return field->is_optional() && field->has_presence(); } bool HasInternalHasMethod(const FieldDescriptor* field) {