Skip to content

Commit 3d501ae

Browse files
dmitriplotnikovcopybara-github
authored andcommitted
Split CelOptionalLibrary into CelOptionalCompilerLibrary and CelOptionalRuntimeLibrary to allow its usage in Lite runtime.
PiperOrigin-RevId: 1007777829
1 parent cfd4a3d commit 3d501ae

15 files changed

Lines changed: 1801 additions & 747 deletions

File tree

‎conformance/src/test/java/dev/cel/conformance/BUILD.bazel‎

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ java_library(
3939
"//extensions:lists_runtime_library",
4040
"//extensions:math_runtime_library",
4141
"//extensions:optional_library",
42+
"//extensions:optional_runtime_library",
4243
"//extensions:sets_runtime_library",
4344
"//extensions:strings_runtime_library",
4445
"//optimizer",
@@ -273,11 +274,7 @@ _TESTS_TO_SKIP_PLANNER_SELECT_OPT = _TESTS_TO_SKIP_PLANNER + [
273274
"optionals",
274275
]
275276

276-
_TESTS_TO_SKIP_LITE_SELECT_OPT = _TESTS_TO_SKIP_PLANNER + [
277-
# Optionals are not supported in CelLiteRuntime.
278-
"optionals",
279-
"block_ext/basic/optional_list,optional_map,optional_map_chained,optional_message",
280-
277+
_TESTS_TO_SKIP_LITE_BASE = _TESTS_TO_SKIP_PLANNER + [
281278
# Proto2 extensions are not supported in CelLiteRuntime.
282279
"proto2_ext",
283280
"proto2/extensions_has",
@@ -291,6 +288,7 @@ _TESTS_TO_SKIP_LITE_SELECT_OPT = _TESTS_TO_SKIP_PLANNER + [
291288

292289
# TODO: Message creation with prepopulated fields is not yet supported in
293290
# CelLiteRuntime.
291+
"block_ext/basic/optional_message",
294292
"comparisons/eq_wrapper/eq_bool,eq_bytes,eq_double,eq_float,eq_int32,eq_int64,eq_string,eq_uint32,eq_uint64",
295293
"comparisons/eq_wrapper/eq_proto2,eq_proto3,eq_proto2_missing_fields_neq,eq_proto3_missing_fields_neq,eq_proto_nan_equal",
296294
"comparisons/eq_wrapper/eq_proto2_any_unpack_equal,eq_proto2_any_unpack_not_equal,eq_proto2_any_unpack_bytewise_fallback_not_equal,eq_proto2_any_unpack_bytewise_fallback_equal,eq_proto3_any_unpack_equal,eq_proto3_any_unpack_not_equal,eq_proto3_any_unpack_bytewise_fallback_not_equal,eq_proto3_any_unpack_bytewise_fallback_equal",
@@ -317,6 +315,7 @@ _TESTS_TO_SKIP_LITE_SELECT_OPT = _TESTS_TO_SKIP_PLANNER + [
317315
"dynamic/complex",
318316
"enums/legacy_proto2/assign_standalone_name,assign_standalone_int,assign_standalone_int_too_big,assign_standalone_int_too_neg,assign_repeated_enum,list_enum_as_list_int,enum_as_int",
319317
"enums/legacy_proto3/assign_standalone_name,assign_standalone_int,assign_standalone_int_big,assign_standalone_int_neg,assign_standalone_int_too_big,assign_standalone_int_too_neg,assign_repeated_enum,list_enum_as_list_int,enum_as_int",
318+
"optionals/optionals/struct_map_optindex_field,struct_map_optindex_field_nested,struct_list_optindex_field,struct_optindex_value,optional_struct_optindex_value,optional_struct_optindex_index_value",
320319
"parse/nest/message_literal",
321320
"parse/repeat/message_literal",
322321
"parse/whitespace",
@@ -337,7 +336,13 @@ _TESTS_TO_SKIP_LITE_SELECT_OPT = _TESTS_TO_SKIP_PLANNER + [
337336
"wrappers",
338337
]
339338

340-
_TESTS_TO_SKIP_LITE = _TESTS_TO_SKIP_LITE_SELECT_OPT + [
339+
_TESTS_TO_SKIP_LITE_SELECT_OPT = _TESTS_TO_SKIP_LITE_BASE + [
340+
# TODO: Optional field selection on proto messages is not yet supported by
341+
# SelectOptimizer.
342+
"optionals",
343+
]
344+
345+
_TESTS_TO_SKIP_LITE = _TESTS_TO_SKIP_LITE_BASE + [
341346
# Custom proto2 default values on unset fields require SelectOptimization in CelLiteRuntime.
342347
"proto2/empty_field/scalar_with_default",
343348
]

‎conformance/src/test/java/dev/cel/conformance/ConformanceTest.java‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
import dev.cel.extensions.CelListsRuntimeLibrary;
6161
import dev.cel.extensions.CelMathRuntimeLibrary;
6262
import dev.cel.extensions.CelOptionalLibrary;
63+
import dev.cel.extensions.CelOptionalRuntimeLibrary;
6364
import dev.cel.extensions.CelSetsRuntimeLibrary;
6465
import dev.cel.extensions.CelStringRuntimeLibrary;
6566
import dev.cel.optimizer.CelOptimizerFactory;
@@ -126,6 +127,7 @@ public final class ConformanceTest extends Statement {
126127
CelEncoderRuntimeLibrary.encoders(),
127128
CelListsRuntimeLibrary.lists(),
128129
CelMathRuntimeLibrary.math(),
130+
CelOptionalRuntimeLibrary.optional(),
129131
CelSetsRuntimeLibrary.sets(),
130132
CelStringRuntimeLibrary.strings());
131133

‎extensions/BUILD.bazel‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,23 @@ java_library(
6565
exports = ["//extensions/src/main/java/dev/cel/extensions:optional_library"],
6666
)
6767

68+
java_library(
69+
name = "optional_compiler_library",
70+
visibility = ["//:internal"],
71+
exports = ["//extensions/src/main/java/dev/cel/extensions:optional_compiler_library"],
72+
)
73+
74+
java_library(
75+
name = "optional_runtime_library",
76+
visibility = ["//:internal"],
77+
exports = ["//extensions/src/main/java/dev/cel/extensions:optional_runtime_library"],
78+
)
79+
80+
cel_android_library(
81+
name = "optional_runtime_library_android",
82+
exports = ["//extensions/src/main/java/dev/cel/extensions:optional_runtime_library_android"],
83+
)
84+
6885
java_library(
6986
name = "sets",
7087
exports = ["//extensions/src/main/java/dev/cel/extensions:sets"],

‎extensions/src/main/java/dev/cel/extensions/BUILD.bazel‎

Lines changed: 66 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -307,27 +307,87 @@ java_library(
307307
tags = [
308308
],
309309
deps = [
310+
":extension_library",
311+
":optional_compiler_library",
312+
":optional_runtime_library",
313+
"//checker:checker_builder",
314+
"//common:cel_function_decl",
315+
"//common:cel_var_decl",
316+
"//common:options",
317+
"//compiler:compiler_builder",
318+
"//parser:macro",
319+
"//parser:parser_builder",
320+
"//runtime",
321+
"//runtime:runtime_equality",
322+
"@maven//:com_google_errorprone_error_prone_annotations",
323+
"@maven//:com_google_guava_guava",
324+
],
325+
)
326+
327+
java_library(
328+
name = "optional_compiler_library",
329+
srcs = ["CelOptionalCompilerLibrary.java"],
330+
tags = [
331+
],
332+
deps = [
333+
":extension_library",
310334
"//checker:checker_builder",
335+
"//common:cel_function_decl",
336+
"//common:cel_issue",
337+
"//common:cel_overload_decl",
338+
"//common:cel_var_decl",
311339
"//common:compiler_common",
312340
"//common:operator",
313-
"//common:options",
314341
"//common/ast",
315342
"//common/types",
316-
"//common/values",
317-
"//common/values:cel_byte_string",
318-
"//common/values:cel_value",
319343
"//compiler:compiler_builder",
320-
"//extensions:extension_library",
321344
"//parser:macro",
322345
"//parser:parser_builder",
323-
"//runtime",
346+
"@maven//:com_google_errorprone_error_prone_annotations",
347+
"@maven//:com_google_guava_guava",
348+
],
349+
)
350+
351+
java_library(
352+
name = "optional_runtime_library",
353+
srcs = ["CelOptionalRuntimeLibrary.java"],
354+
tags = [
355+
],
356+
deps = [
357+
"//common:operator",
358+
"//common:options",
359+
"//common/values",
360+
"//common/values:cel_byte_string",
361+
"//common/values:cel_value",
324362
"//runtime:function_binding",
363+
"//runtime:lite_runtime",
325364
"//runtime:runtime_equality",
365+
"@maven//:com_google_errorprone_error_prone_annotations",
326366
"@maven//:com_google_guava_guava",
327367
"@maven//:com_google_protobuf_protobuf_java",
328368
],
329369
)
330370

371+
cel_android_library(
372+
name = "optional_runtime_library_android",
373+
srcs = ["CelOptionalRuntimeLibrary.java"],
374+
tags = [
375+
],
376+
deps = [
377+
"//common:operator_android",
378+
"//common:options",
379+
"//common/values:cel_byte_string",
380+
"//common/values:cel_value_android",
381+
"//common/values:values_android",
382+
"//runtime:function_binding_android",
383+
"//runtime:lite_runtime_android",
384+
"//runtime:runtime_equality_android",
385+
"@maven//:com_google_errorprone_error_prone_annotations",
386+
"@maven_android//:com_google_guava_guava",
387+
"@maven_android//:com_google_protobuf_protobuf_javalite",
388+
],
389+
)
390+
331391
java_library(
332392
name = "sets",
333393
srcs = ["CelSetsExtensions.java"],

‎extensions/src/main/java/dev/cel/extensions/CelExtensions.java‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,30 @@ public static CelOptionalLibrary optional(int version) {
5858
return CelOptionalLibrary.library().version(version);
5959
}
6060

61+
/**
62+
* Implementation of optional values.
63+
*
64+
* <p>Refer to README.md for available functions.
65+
*
66+
* <p>This will include only the specific functions denoted by {@link
67+
* CelOptionalLibrary.Function}.
68+
*/
69+
public static CelOptionalLibrary optional(CelOptionalLibrary.Function... functions) {
70+
return optional(ImmutableSet.copyOf(functions));
71+
}
72+
73+
/**
74+
* Implementation of optional values.
75+
*
76+
* <p>Refer to README.md for available functions.
77+
*
78+
* <p>This will include only the specific functions denoted by {@link
79+
* CelOptionalLibrary.Function}.
80+
*/
81+
public static CelOptionalLibrary optional(Set<CelOptionalLibrary.Function> functions) {
82+
return new CelOptionalLibrary(functions);
83+
}
84+
6185
/**
6286
* Extended functions for string manipulation.
6387
*

0 commit comments

Comments
 (0)