Skip to content

Commit 52773dc

Browse files
l46kokcopybara-github
authored andcommitted
Generally handle function strictness in the runtime, Add NotStrictlyFalse function to standard lib
PiperOrigin-RevId: 826185261
1 parent 0fb05e5 commit 52773dc

File tree

72 files changed

+919
-759
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+919
-759
lines changed

runtime/BUILD.bazel

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,6 @@ cel_android_library(
7676
exports = ["//runtime/src/main/java/dev/cel/runtime:late_function_binding_android"],
7777
)
7878

79-
java_library(
80-
name = "function_overload_impl",
81-
visibility = ["//:internal"],
82-
exports = ["//runtime/src/main/java/dev/cel/runtime:function_overload_impl"],
83-
)
84-
8579
java_library(
8680
name = "evaluation_exception_builder",
8781
exports = ["//runtime/src/main/java/dev/cel/runtime:evaluation_exception_builder"],
@@ -220,3 +214,33 @@ cel_android_library(
220214
visibility = ["//:internal"],
221215
exports = ["//runtime/src/main/java/dev/cel/runtime:lite_runtime_impl_android"],
222216
)
217+
218+
java_library(
219+
name = "resolved_overload",
220+
visibility = ["//:internal"],
221+
exports = ["//runtime/src/main/java/dev/cel/runtime:resolved_overload"],
222+
)
223+
224+
cel_android_library(
225+
name = "resolved_overload_android",
226+
visibility = ["//:internal"],
227+
exports = ["//runtime/src/main/java/dev/cel/runtime:resolved_overload_android"],
228+
)
229+
230+
java_library(
231+
name = "resolved_overload_internal",
232+
visibility = ["//:internal"],
233+
exports = ["//runtime/src/main/java/dev/cel/runtime:resolved_overload_internal"],
234+
)
235+
236+
java_library(
237+
name = "internal_function_binder",
238+
visibility = ["//:internal"],
239+
exports = ["//runtime/src/main/java/dev/cel/runtime:internal_function_binder"],
240+
)
241+
242+
cel_android_library(
243+
name = "internal_function_binder_android",
244+
visibility = ["//:internal"],
245+
exports = ["//runtime/src/main/java/dev/cel/runtime:internal_function_binder_andriod"],
246+
)

runtime/src/main/java/dev/cel/runtime/BUILD.bazel

Lines changed: 94 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,6 @@ FUNCTION_BINDING_SOURCES = [
5151
"FunctionBindingImpl.java",
5252
]
5353

54-
# keep sorted
55-
FUNCTION_OVERLOAD_IMPL_SOURCES = [
56-
"FunctionOverload.java",
57-
"FunctionResolver.java",
58-
"ResolvedOverload.java",
59-
]
60-
6154
# keep sorted
6255
INTERPRABLE_SOURCES = [
6356
"GlobalResolver.java",
@@ -67,7 +60,6 @@ INTERPRABLE_SOURCES = [
6760
# keep sorted
6861
DISPATCHER_SOURCES = [
6962
"DefaultDispatcher.java",
70-
"Dispatcher.java",
7163
]
7264

7365
java_library(
@@ -128,10 +120,13 @@ java_library(
128120
":base",
129121
":evaluation_exception",
130122
":evaluation_exception_builder",
131-
":function_overload_impl",
123+
":function_overload",
124+
":resolved_overload",
125+
":resolved_overload_internal",
132126
"//:auto_value",
133127
"//common:error_codes",
134128
"//common/annotations",
129+
"//runtime:function_resolver",
135130
"@maven//:com_google_code_findbugs_annotations",
136131
"@maven//:com_google_errorprone_error_prone_annotations",
137132
"@maven//:com_google_guava_guava",
@@ -146,7 +141,10 @@ cel_android_library(
146141
":base_android",
147142
":evaluation_exception",
148143
":evaluation_exception_builder",
149-
":function_overload_impl_android",
144+
":function_overload_android",
145+
":function_resolver_android",
146+
":resolved_overload_android",
147+
":resolved_overload_internal_android",
150148
"//:auto_value",
151149
"//common:error_codes",
152150
"//common/annotations",
@@ -250,7 +248,7 @@ java_library(
250248
tags = [
251249
],
252250
deps = [
253-
":function_overload_impl",
251+
":function_overload",
254252
":metadata",
255253
"//common:cel_ast",
256254
"//common/annotations",
@@ -264,11 +262,10 @@ cel_android_library(
264262
srcs = BASE_SOURCES,
265263
visibility = ["//visibility:private"],
266264
deps = [
267-
":function_overload_impl_android",
265+
":function_overload_android",
268266
":metadata",
269267
"//common:cel_ast_android",
270268
"//common/annotations",
271-
"@maven//:com_google_code_findbugs_annotations",
272269
"@maven//:com_google_errorprone_error_prone_annotations",
273270
"@maven_android//:com_google_guava_guava",
274271
],
@@ -288,10 +285,10 @@ java_library(
288285
":evaluation_exception",
289286
":evaluation_exception_builder",
290287
":evaluation_listener",
291-
":function_overload_impl",
292288
":interpretable",
293289
":interpreter_util",
294290
":metadata",
291+
":resolved_overload_internal",
295292
":runtime_helpers",
296293
":runtime_type_provider",
297294
":type_resolver",
@@ -306,11 +303,13 @@ java_library(
306303
"//common/types",
307304
"//common/types:type_providers",
308305
"//common/values:cel_byte_string",
306+
"//runtime:function_resolver",
309307
"@maven//:com_google_code_findbugs_annotations",
310308
"@maven//:com_google_errorprone_error_prone_annotations",
311309
"@maven//:com_google_guava_guava",
312310
"@maven//:com_google_protobuf_protobuf_java",
313311
"@maven//:org_jspecify_jspecify",
312+
"@maven_android//:com_google_protobuf_protobuf_javalite",
314313
],
315314
)
316315

@@ -326,10 +325,11 @@ cel_android_library(
326325
":evaluation_exception",
327326
":evaluation_exception_builder",
328327
":evaluation_listener_android",
329-
":function_overload_impl_android",
328+
":function_resolver_android",
330329
":interpretable_android",
331330
":interpreter_util_android",
332331
":metadata",
332+
":resolved_overload_internal_android",
333333
":runtime_helpers_android",
334334
":runtime_type_provider_android",
335335
":type_resolver_android",
@@ -486,7 +486,6 @@ RUNTIME_SOURCES = [
486486

487487
LATE_FUNCTION_BINDING_SOURCES = [
488488
"CelLateFunctionBindings.java",
489-
"CelResolvedOverload.java",
490489
]
491490

492491
java_library(
@@ -498,9 +497,9 @@ java_library(
498497
":dispatcher",
499498
":evaluation_exception",
500499
":function_binding",
501-
":function_overload",
502-
":function_overload_impl",
503500
":function_resolver",
501+
":resolved_overload",
502+
":resolved_overload_internal",
504503
"//:auto_value",
505504
"@maven//:com_google_errorprone_error_prone_annotations",
506505
"@maven//:com_google_guava_guava",
@@ -516,9 +515,9 @@ cel_android_library(
516515
":dispatcher_android",
517516
":evaluation_exception",
518517
":function_binding_android",
519-
":function_overload_android",
520-
":function_overload_impl_android",
521518
":function_resolver_android",
519+
":resolved_overload_android",
520+
":resolved_overload_internal_android",
522521
"//:auto_value",
523522
"@maven//:com_google_errorprone_error_prone_annotations",
524523
"@maven_android//:com_google_guava_guava",
@@ -586,8 +585,8 @@ java_library(
586585
deps = [
587586
":evaluation_exception",
588587
":evaluation_listener",
589-
":function_overload_impl",
590588
"//common/annotations",
589+
"//runtime:function_resolver",
591590
"@maven//:com_google_errorprone_error_prone_annotations",
592591
"@maven//:org_jspecify_jspecify",
593592
],
@@ -600,7 +599,7 @@ cel_android_library(
600599
deps = [
601600
":evaluation_exception",
602601
":evaluation_listener_android",
603-
":function_overload_impl_android",
602+
":function_resolver_android",
604603
"//common/annotations",
605604
"@maven//:com_google_errorprone_error_prone_annotations",
606605
"@maven//:org_jspecify_jspecify",
@@ -650,8 +649,10 @@ java_library(
650649
"//runtime/standard:multiply",
651650
"//runtime/standard:negate",
652651
"//runtime/standard:not_equals",
652+
"//runtime/standard:not_strictly_false",
653653
"//runtime/standard:size",
654654
"//runtime/standard:standard_function",
655+
"//runtime/standard:standard_overload",
655656
"//runtime/standard:starts_with",
656657
"//runtime/standard:string",
657658
"//runtime/standard:subtract",
@@ -705,8 +706,10 @@ cel_android_library(
705706
"//runtime/standard:multiply_android",
706707
"//runtime/standard:negate_android",
707708
"//runtime/standard:not_equals_android",
709+
"//runtime/standard:not_strictly_false_android",
708710
"//runtime/standard:size_android",
709711
"//runtime/standard:standard_function_android",
712+
"//runtime/standard:standard_overload_android",
710713
"//runtime/standard:starts_with_android",
711714
"//runtime/standard:string_android",
712715
"//runtime/standard:subtract_android",
@@ -751,7 +754,8 @@ java_library(
751754
tags = [
752755
],
753756
deps = [
754-
":function_overload_impl",
757+
":evaluation_exception",
758+
":resolved_overload_internal",
755759
"@maven//:com_google_code_findbugs_annotations",
756760
"@maven//:com_google_errorprone_error_prone_annotations",
757761
],
@@ -761,7 +765,8 @@ cel_android_library(
761765
name = "function_resolver_android",
762766
srcs = ["CelFunctionResolver.java"],
763767
deps = [
764-
":function_overload_impl_android",
768+
":evaluation_exception",
769+
":resolved_overload_internal_android",
765770
"@maven//:com_google_code_findbugs_annotations",
766771
"@maven//:com_google_errorprone_error_prone_annotations",
767772
],
@@ -775,7 +780,7 @@ java_library(
775780
tags = [
776781
],
777782
deps = [
778-
":function_overload_impl",
783+
":evaluation_exception",
779784
"@maven//:com_google_errorprone_error_prone_annotations",
780785
],
781786
)
@@ -786,31 +791,32 @@ cel_android_library(
786791
"CelFunctionOverload.java",
787792
],
788793
deps = [
789-
":function_overload_impl_android",
794+
":evaluation_exception",
790795
"@maven//:com_google_errorprone_error_prone_annotations",
791796
],
792797
)
793798

794799
java_library(
795-
name = "function_overload_impl",
796-
srcs = FUNCTION_OVERLOAD_IMPL_SOURCES,
800+
name = "resolved_overload_internal",
801+
srcs = ["ResolvedOverload.java"],
797802
tags = [
798803
],
799804
deps = [
800-
":evaluation_exception",
801-
"//common/annotations",
805+
":function_overload",
806+
":unknown_attributes",
802807
"@maven//:com_google_code_findbugs_annotations",
803808
"@maven//:com_google_errorprone_error_prone_annotations",
804809
"@maven//:com_google_protobuf_protobuf_java",
805810
],
806811
)
807812

808813
cel_android_library(
809-
name = "function_overload_impl_android",
810-
srcs = FUNCTION_OVERLOAD_IMPL_SOURCES,
814+
name = "resolved_overload_internal_android",
815+
srcs = ["ResolvedOverload.java"],
816+
visibility = ["//visibility:private"],
811817
deps = [
812-
":evaluation_exception",
813-
"//common/annotations",
818+
":function_overload_android",
819+
":unknown_attributes_android",
814820
"@maven//:com_google_code_findbugs_annotations",
815821
"@maven//:com_google_errorprone_error_prone_annotations",
816822
"@maven_android//:com_google_protobuf_protobuf_javalite",
@@ -1167,3 +1173,57 @@ cel_android_library(
11671173
"@maven//:com_google_errorprone_error_prone_annotations",
11681174
],
11691175
)
1176+
1177+
java_library(
1178+
name = "resolved_overload",
1179+
srcs = ["CelResolvedOverload.java"],
1180+
tags = [
1181+
],
1182+
deps = [
1183+
":function_overload",
1184+
":resolved_overload_internal",
1185+
"//:auto_value",
1186+
"@maven//:com_google_errorprone_error_prone_annotations",
1187+
"@maven//:com_google_guava_guava",
1188+
],
1189+
)
1190+
1191+
cel_android_library(
1192+
name = "resolved_overload_android",
1193+
srcs = ["CelResolvedOverload.java"],
1194+
tags = [
1195+
],
1196+
deps = [
1197+
":function_overload_android",
1198+
":resolved_overload_internal_android",
1199+
"//:auto_value",
1200+
"@maven//:com_google_errorprone_error_prone_annotations",
1201+
"@maven_android//:com_google_guava_guava",
1202+
],
1203+
)
1204+
1205+
java_library(
1206+
name = "internal_function_binder",
1207+
srcs = ["InternalFunctionBinder.java"],
1208+
tags = [
1209+
],
1210+
deps = [
1211+
":function_overload",
1212+
"//common/annotations",
1213+
"//runtime:function_binding",
1214+
"@maven//:com_google_guava_guava",
1215+
],
1216+
)
1217+
1218+
cel_android_library(
1219+
name = "internal_function_binder_andriod",
1220+
srcs = ["InternalFunctionBinder.java"],
1221+
tags = [
1222+
],
1223+
deps = [
1224+
":function_overload_android",
1225+
"//common/annotations",
1226+
"//runtime:function_binding_android",
1227+
"@maven_android//:com_google_guava_guava",
1228+
],
1229+
)

runtime/src/main/java/dev/cel/runtime/CelFunctionBinding.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
import com.google.common.collect.ImmutableList;
1818
import com.google.errorprone.annotations.Immutable;
19-
import dev.cel.common.annotations.Internal;
2019

2120
/**
2221
* Binding consisting of an overload id, a Java-native argument signature, and an overload
@@ -36,7 +35,7 @@
3635
*
3736
* <p>Examples: string_startsWith_string, mathMax_list, lessThan_money_money
3837
*/
39-
@Internal
38+
4039
@Immutable
4140
public interface CelFunctionBinding {
4241
String getOverloadId();
@@ -45,6 +44,8 @@ public interface CelFunctionBinding {
4544

4645
CelFunctionOverload getDefinition();
4746

47+
boolean isStrict();
48+
4849
/** Create a unary function binding from the {@code overloadId}, {@code arg}, and {@code impl}. */
4950
@SuppressWarnings("unchecked")
5051
static <T> CelFunctionBinding from(
@@ -66,6 +67,7 @@ static <T1, T2> CelFunctionBinding from(
6667
/** Create a function binding from the {@code overloadId}, {@code argTypes}, and {@code impl}. */
6768
static CelFunctionBinding from(
6869
String overloadId, Iterable<Class<?>> argTypes, CelFunctionOverload impl) {
69-
return new FunctionBindingImpl(overloadId, ImmutableList.copyOf(argTypes), impl);
70+
return new FunctionBindingImpl(
71+
overloadId, ImmutableList.copyOf(argTypes), impl, /* isStrict= */ true);
7072
}
7173
}

0 commit comments

Comments
 (0)