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) {