Skip to content

Commit 66d5171

Browse files
acozzettecopybara-github
authored andcommitted
Internal change
PiperOrigin-RevId: 783070734
1 parent 23649b0 commit 66d5171

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

src/google/protobuf/descriptor.cc

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5173,6 +5173,21 @@ absl::Status DescriptorPool::SetFeatureSetDefaults(FeatureSetDefaults spec) {
51735173
return absl::OkStatus();
51745174
}
51755175

5176+
bool DescriptorPool::ShouldEnforceExtensionDeclaration(
5177+
const FieldDescriptor& field) const {
5178+
ABSL_DCHECK(field.is_extension());
5179+
const Descriptor* containing_type = field.containing_type();
5180+
switch (enforce_extension_declarations_) {
5181+
case ExtDeclEnforcementLevel::kCustomExtensions:
5182+
return containing_type->file()->name() !=
5183+
"google/protobuf/descriptor.proto";
5184+
case ExtDeclEnforcementLevel::kAllExtensions:
5185+
return true;
5186+
default:
5187+
return false;
5188+
}
5189+
}
5190+
51765191
const FeatureSetDefaults& DescriptorPool::GetFeatureSetDefaults() const {
51775192
if (feature_set_defaults_spec_ != nullptr) return *feature_set_defaults_spec_;
51785193
static const FeatureSetDefaults* cpp_default_spec =
@@ -8717,7 +8732,9 @@ void DescriptorBuilder::ValidateOptions(const FieldDescriptor* field,
87178732
return;
87188733
}
87198734

8720-
if (pool_->EnforceCustomExtensionDeclarations()) {
8735+
// TODO: b/396020109 - Check for MessageSet extensions in separate .txtpb
8736+
// file.
8737+
if (pool_->ShouldEnforceExtensionDeclaration(*field)) {
87218738
for (const auto& declaration : extension_range->options_->declaration()) {
87228739
if (declaration.number() != field->number()) continue;
87238740
if (declaration.reserved()) {

src/google/protobuf/descriptor.h

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2386,17 +2386,12 @@ class PROTOBUF_EXPORT DescriptorPool {
23862386
enforce_extension_declarations_ = enforce;
23872387
}
23882388

2389-
bool EnforceDescriptorExtensionDeclarations() const {
2389+
bool ShouldEnforceDescriptorExtensionDeclarations() const {
23902390
return enforce_extension_declarations_ ==
23912391
ExtDeclEnforcementLevel::kAllExtensions;
23922392
}
23932393

2394-
bool EnforceCustomExtensionDeclarations() const {
2395-
return enforce_extension_declarations_ ==
2396-
ExtDeclEnforcementLevel::kAllExtensions ||
2397-
enforce_extension_declarations_ ==
2398-
ExtDeclEnforcementLevel::kCustomExtensions;
2399-
}
2394+
bool ShouldEnforceExtensionDeclaration(const FieldDescriptor& field) const;
24002395

24012396
#ifndef SWIG
24022397
// Dispatch recursive builds to a callback that may stick them onto a separate

0 commit comments

Comments
 (0)