| 991 | } |
| 992 | |
| 993 | absl::Status LegacyStructValue::Qualify( |
| 994 | absl::Span<const SelectQualifier> qualifiers, bool presence_test, |
| 995 | const google::protobuf::DescriptorPool* absl_nonnull descriptor_pool, |
| 996 | google::protobuf::MessageFactory* absl_nonnull message_factory, |
| 997 | google::protobuf::Arena* absl_nonnull arena, Value* absl_nonnull result, |
| 998 | int* absl_nonnull count) const { |
| 999 | if (ABSL_PREDICT_FALSE(qualifiers.empty())) { |
| 1000 | return absl::InvalidArgumentError("invalid select qualifier path."); |
| 1001 | } |
| 1002 | auto message_wrapper = AsMessageWrapper(message_ptr_, legacy_type_info_); |
| 1003 | const auto* access_apis = |
| 1004 | message_wrapper.legacy_type_info()->GetAccessApis(message_wrapper); |
| 1005 | if (ABSL_PREDICT_FALSE(access_apis == nullptr)) { |
| 1006 | absl::string_view field_name = absl::visit( |
| 1007 | absl::Overload( |
| 1008 | [](const FieldSpecifier& field) -> absl::string_view { |
| 1009 | return field.name; |
| 1010 | }, |
| 1011 | [](const AttributeQualifier& field) -> absl::string_view { |
| 1012 | return field.GetStringKey().value_or("<invalid field>"); |
| 1013 | }), |
| 1014 | qualifiers.front()); |
| 1015 | *result = NoSuchFieldError(field_name); |
| 1016 | *count = -1; |
| 1017 | return absl::OkStatus(); |
| 1018 | } |
| 1019 | CEL_ASSIGN_OR_RETURN( |
| 1020 | auto legacy_result, |
| 1021 | access_apis->Qualify(qualifiers, message_wrapper, presence_test, |
| 1022 | MemoryManager::Pooling(arena))); |
| 1023 | CEL_RETURN_IF_ERROR(ModernValue(arena, legacy_result.value, *result)); |
| 1024 | *count = legacy_result.qualifier_count; |
| 1025 | return absl::OkStatus(); |
| 1026 | } |
| 1027 | |
| 1028 | } // namespace common_internal |
| 1029 |
nothing calls this directly
no test coverage detected