| 42 | } |
| 43 | |
| 44 | absl::StatusOr<FunctionDecl> FunctionDeclFromProto( |
| 45 | absl::string_view name, |
| 46 | const cel::expr::Decl::FunctionDecl& function, |
| 47 | const google::protobuf::DescriptorPool* absl_nonnull descriptor_pool, |
| 48 | google::protobuf::Arena* absl_nonnull arena) { |
| 49 | cel::FunctionDecl decl; |
| 50 | decl.set_name(name); |
| 51 | for (const auto& overload_pb : function.overloads()) { |
| 52 | cel::OverloadDecl ovl_decl; |
| 53 | ovl_decl.set_id(overload_pb.overload_id()); |
| 54 | ovl_decl.set_member(overload_pb.is_instance_function()); |
| 55 | CEL_ASSIGN_OR_RETURN( |
| 56 | cel::Type result, |
| 57 | TypeFromProto(overload_pb.result_type(), descriptor_pool, arena)); |
| 58 | ovl_decl.set_result(result); |
| 59 | std::vector<cel::Type> param_types; |
| 60 | param_types.reserve(overload_pb.params_size()); |
| 61 | for (const auto& param_type_pb : overload_pb.params()) { |
| 62 | CEL_ASSIGN_OR_RETURN( |
| 63 | param_types.emplace_back(), |
| 64 | TypeFromProto(param_type_pb, descriptor_pool, arena)); |
| 65 | } |
| 66 | ovl_decl.mutable_args() = std::move(param_types); |
| 67 | CEL_RETURN_IF_ERROR(decl.AddOverload(std::move(ovl_decl))); |
| 68 | } |
| 69 | return decl; |
| 70 | } |
| 71 | |
| 72 | absl::StatusOr<absl::variant<VariableDecl, FunctionDecl>> DeclFromProto( |
| 73 | const cel::expr::Decl& decl, |
no test coverage detected