Skip to content

Commit c5fe7ce

Browse files
l46kokcopybara-github
authored andcommitted
Support parsed-only evaluation for lists extensions
PiperOrigin-RevId: 899285209
1 parent 207dca5 commit c5fe7ce

9 files changed

Lines changed: 444 additions & 348 deletions

File tree

extensions/src/main/java/dev/cel/extensions/CelListsExtensions.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -241,25 +241,34 @@ public void setRuntimeOptions(CelRuntimeBuilder runtimeBuilder) {
241241
public void setRuntimeOptions(
242242
CelRuntimeBuilder runtimeBuilder, RuntimeEquality runtimeEquality, CelOptions celOptions) {
243243
for (Function function : functions) {
244-
runtimeBuilder.addFunctionBindings(function.functionBindings);
244+
if (!function.functionBindings.isEmpty()) {
245+
runtimeBuilder.addFunctionBindings(
246+
CelFunctionBinding.fromOverloads(function.getFunction(), function.functionBindings));
247+
}
245248
for (CelOverloadDecl overload : function.functionDecl.overloads()) {
246249
switch (overload.overloadId()) {
247250
case "list_distinct":
248251
runtimeBuilder.addFunctionBindings(
249-
CelFunctionBinding.from(
250-
"list_distinct", Collection.class, (list) -> distinct(list, runtimeEquality)));
252+
CelFunctionBinding.fromOverloads(
253+
"distinct",
254+
CelFunctionBinding.from(
255+
"list_distinct", Collection.class, (list) -> distinct(list, runtimeEquality))));
251256
break;
252257
case "list_sort":
253258
runtimeBuilder.addFunctionBindings(
254-
CelFunctionBinding.from(
255-
"list_sort", Collection.class, (list) -> sort(list, celOptions)));
259+
CelFunctionBinding.fromOverloads(
260+
"sort",
261+
CelFunctionBinding.from(
262+
"list_sort", Collection.class, (list) -> sort(list, celOptions))));
256263
break;
257264
case "list_sortByAssociatedKeys":
258265
runtimeBuilder.addFunctionBindings(
259-
CelFunctionBinding.from(
260-
"list_sortByAssociatedKeys",
261-
Collection.class,
262-
(list) -> sortByAssociatedKeys(list, celOptions)));
266+
CelFunctionBinding.fromOverloads(
267+
"lists.@sortByAssociatedKeys",
268+
CelFunctionBinding.from(
269+
"list_sortByAssociatedKeys",
270+
Collection.class,
271+
(list) -> sortByAssociatedKeys(list, celOptions))));
263272
break;
264273
default:
265274
// Nothing to add

extensions/src/test/java/dev/cel/extensions/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ java_library(
4040
"//runtime:lite_runtime_factory",
4141
"//runtime:partial_vars",
4242
"//runtime:unknown_attributes",
43+
"//testing:cel_runtime_flavor",
4344
"@cel_spec//proto/cel/expr/conformance/proto2:test_all_types_java_proto",
4445
"@cel_spec//proto/cel/expr/conformance/proto3:test_all_types_java_proto",
4546
"@cel_spec//proto/cel/expr/conformance/test:simple_java_proto",

0 commit comments

Comments
 (0)