Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions eval/compiler/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,7 @@ cc_test(
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:status_matchers",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:span",
"@com_google_cel_spec//proto/cel/expr:checked_cc_proto",
Expand Down
9 changes: 5 additions & 4 deletions eval/compiler/flat_expr_builder_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#include "absl/container/flat_hash_map.h"
#include "absl/status/status.h"
#include "absl/status/status_matchers.h"
#include "absl/status/statusor.h"
#include "absl/strings/str_split.h"
#include "absl/strings/string_view.h"
#include "absl/types/span.h"
Expand Down Expand Up @@ -2394,10 +2395,10 @@ struct ConstantFoldingTestCase {
};

class UnknownFunctionImpl : public cel::Function {
absl::StatusOr<Value> Invoke(absl::Span<const Value> args,
const google::protobuf::DescriptorPool* absl_nonnull,
google::protobuf::MessageFactory* absl_nonnull,
google::protobuf::Arena* absl_nonnull) const override {
absl::StatusOr<Value> Invoke(
absl::Span<const Value> args, const google::protobuf::DescriptorPool* absl_nonnull,
google::protobuf::MessageFactory* absl_nonnull, google::protobuf::Arena* absl_nonnull,
const cel::ActivationInterface* absl_nullable) const override {
return cel::UnknownValue();
}
};
Expand Down
6 changes: 3 additions & 3 deletions eval/eval/function_step.cc
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,9 @@ inline absl::StatusOr<Value> Invoke(
const cel::FunctionOverloadReference& overload, int64_t expr_id,
absl::Span<const cel::Value> args, ExecutionFrameBase& frame) {
CEL_ASSIGN_OR_RETURN(
Value result,
overload.implementation.Invoke(args, frame.descriptor_pool(),
frame.message_factory(), frame.arena()));
Value result, overload.implementation.Invoke(
args, frame.descriptor_pool(), frame.message_factory(),
frame.arena(), &frame.activation()));

if (frame.unknown_function_results_enabled() &&
IsUnknownFunctionResultError(result)) {
Expand Down
1 change: 1 addition & 0 deletions eval/public/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ cc_library(
"//common:value",
"//eval/internal:interop",
"//internal:status_macros",
"//runtime:activation_interface",
"//runtime:function",
"@com_google_absl//absl/base:nullability",
"@com_google_absl//absl/status",
Expand Down
4 changes: 3 additions & 1 deletion eval/public/cel_function.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "eval/internal/interop.h"
#include "eval/public/cel_value.h"
#include "internal/status_macros.h"
#include "runtime/activation_interface.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/descriptor.h"
#include "google/protobuf/message.h"
Expand Down Expand Up @@ -57,7 +58,8 @@ absl::StatusOr<Value> CelFunction::Invoke(
absl::Span<const cel::Value> arguments,
const google::protobuf::DescriptorPool* absl_nonnull descriptor_pool,
google::protobuf::MessageFactory* absl_nonnull message_factory,
google::protobuf::Arena* absl_nonnull arena) const {
google::protobuf::Arena* absl_nonnull arena,
const cel::ActivationInterface* absl_nullable activation) const {
std::vector<CelValue> legacy_args;
legacy_args.reserve(arguments.size());

Expand Down
3 changes: 2 additions & 1 deletion eval/public/cel_function.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ class CelFunction : public ::cel::Function {
absl::Span<const cel::Value> arguments,
const google::protobuf::DescriptorPool* absl_nonnull descriptor_pool,
google::protobuf::MessageFactory* absl_nonnull message_factory,
google::protobuf::Arena* absl_nonnull arena) const override;
google::protobuf::Arena* absl_nonnull arena,
const cel::ActivationInterface* absl_nullable activation) const override;

// CelFunction descriptor
const CelFunctionDescriptor& descriptor() const { return descriptor_; }
Expand Down
2 changes: 1 addition & 1 deletion eval/public/cel_function_registry.cc
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class ProxyToModernCelFunction : public CelFunction {
auto modern_result,
implementation_->Invoke(
modern_args, google::protobuf::DescriptorPool::generated_pool(),
google::protobuf::MessageFactory::generated_factory(), arena));
google::protobuf::MessageFactory::generated_factory(), arena, nullptr));

*result = cel::interop_internal::ModernValueToLegacyValueOrDie(
arena, modern_result);
Expand Down
4 changes: 2 additions & 2 deletions runtime/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -500,13 +500,11 @@ cc_library(
":function",
":register_function_helper",
"//common:function_descriptor",
"//common:kind",
"//common:value",
"//internal:status_macros",
"//runtime/internal:function_adapter",
"@com_google_absl//absl/base:nullability",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/functional:bind_front",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
Expand All @@ -526,10 +524,12 @@ cc_test(
"//common:value",
"//common:value_testing",
"//internal:testing",
"@com_google_absl//absl/base:nullability",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/time",
"@com_google_protobuf//:protobuf",
],
)

Expand Down
8 changes: 4 additions & 4 deletions runtime/activation_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,10 @@ class FunctionImpl : public cel::Function {
public:
FunctionImpl() = default;

absl::StatusOr<Value> Invoke(absl::Span<const Value> args,
const google::protobuf::DescriptorPool* absl_nonnull,
google::protobuf::MessageFactory* absl_nonnull,
google::protobuf::Arena* absl_nonnull) const override {
absl::StatusOr<Value> Invoke(
absl::Span<const Value> args, const google::protobuf::DescriptorPool* absl_nonnull,
google::protobuf::MessageFactory* absl_nonnull, google::protobuf::Arena* absl_nonnull,
const ActivationInterface* absl_nullable) const override {
return NullValue();
}
};
Expand Down
5 changes: 4 additions & 1 deletion runtime/function.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@

namespace cel {

class ActivationInterface;

// Interface for extension functions.
//
// The host for the CEL environment may provide implementations to define custom
Expand All @@ -47,7 +49,8 @@ class Function {
absl::Span<const Value> args,
const google::protobuf::DescriptorPool* absl_nonnull descriptor_pool,
google::protobuf::MessageFactory* absl_nonnull message_factory,
google::protobuf::Arena* absl_nonnull arena) const = 0;
google::protobuf::Arena* absl_nonnull arena,
const ActivationInterface* absl_nullable activation) const = 0;
};

} // namespace cel
Expand Down
Loading