@@ -5005,9 +5005,9 @@ class DescriptorBuilder {
50055005 const DescriptorProto::ExtensionRange& proto) {}
50065006 void ValidateExtensionRangeOptions (const DescriptorProto& proto,
50075007 const Descriptor& message);
5008- void MaybeAddFeatureSupportError (const absl::Status& feature_support_status ,
5009- const Message& proto ,
5010- absl::string_view full_name );
5008+ void MaybeAddError (const absl::Status& status, absl::string_view full_name ,
5009+ const Message& descriptor ,
5010+ DescriptorPool::ErrorCollector::ErrorLocation location );
50115011 void ValidateExtensionDeclaration (
50125012 absl::string_view full_name,
50135013 const RepeatedPtrField<ExtensionRangeOptions_Declaration>& declarations,
@@ -6342,10 +6342,9 @@ FileDescriptor* DescriptorBuilder::BuildFileImpl(
63426342
63436343 absl::StatusOr<FeatureResolver> feature_resolver =
63446344 FeatureResolver::Create (file_->edition_ , defaults);
6345- if (!feature_resolver.ok ()) {
6346- AddError (proto.name (), proto, DescriptorPool::ErrorCollector::EDITIONS,
6347- [&] { return std::string (feature_resolver.status ().message ()); });
6348- } else {
6345+ MaybeAddError (feature_resolver.status (), proto.name (), proto,
6346+ DescriptorPool::ErrorCollector::EDITIONS);
6347+ if (feature_resolver.ok ()) {
63496348 feature_resolver_.emplace (std::move (feature_resolver).value ());
63506349 }
63516350
@@ -8496,15 +8495,15 @@ void DescriptorBuilder::ValidateOptions(const OneofDescriptor* /*oneof*/,
84968495}
84978496
84988497
8499- void DescriptorBuilder::MaybeAddFeatureSupportError (
8500- const absl::Status& feature_support_status, const Message& proto,
8501- absl::string_view full_name) {
8502- if (feature_support_status.ok ()) {
8498+ void DescriptorBuilder::MaybeAddError (
8499+ const absl::Status& status, absl::string_view full_name,
8500+ const Message& descriptor,
8501+ DescriptorPool::ErrorCollector::ErrorLocation location) {
8502+ if (status.ok ()) {
85038503 return ;
85048504 }
8505- std::string feature_support_error (feature_support_status.message ());
8506- AddError (full_name, proto, DescriptorPool::ErrorCollector::OPTION_NAME,
8507- feature_support_error.c_str ());
8505+ std::string error (status.message ());
8506+ AddError (full_name, descriptor, location, error.c_str ());
85088507}
85098508
85108509void DescriptorBuilder::ValidateOptions (const FieldDescriptor* field,
@@ -8515,8 +8514,8 @@ void DescriptorBuilder::ValidateOptions(const FieldDescriptor* field,
85158514 if (pool_->enforce_feature_support_validation_ ) {
85168515 absl::Status feature_support_status =
85178516 FeatureResolver::ValidateFieldFeatureSupport (*field);
8518- MaybeAddFeatureSupportError (feature_support_status, proto,
8519- field-> full_name () );
8517+ MaybeAddError (feature_support_status, field-> full_name () , proto,
8518+ DescriptorPool::ErrorCollector::OPTION_NAME );
85208519 }
85218520
85228521 ValidateFieldFeatures (field, proto);
@@ -8858,8 +8857,8 @@ void DescriptorBuilder::ValidateOptions(const EnumValueDescriptor* enum_value,
88588857 absl::Status feature_support_result =
88598858 FeatureResolver::ValidateFeatureSupport (
88608859 enum_value->options ().feature_support (), enum_value->full_name ());
8861- MaybeAddFeatureSupportError (feature_support_result, proto,
8862- enum_value-> full_name () );
8860+ MaybeAddError (feature_support_result, enum_value-> full_name () , proto,
8861+ DescriptorPool::ErrorCollector::OPTION_NAME );
88638862 }
88648863}
88658864
0 commit comments