Skip to content

Commit 4185eb0

Browse files
l46kokcopybara-github
authored andcommitted
Modernize Env and ExprChecker to use CelTypeProvider
PiperOrigin-RevId: 983383517
1 parent 13ad4ff commit 4185eb0

8 files changed

Lines changed: 492 additions & 138 deletions

File tree

checker/BUILD.bazel

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
load("@rules_java//java:defs.bzl", "java_library")
2+
load("//:cel_android_rules.bzl", "cel_android_library")
23

34
package(
45
default_applicable_licenses = ["//:license"],
@@ -53,3 +54,8 @@ java_library(
5354
name = "standard_decl",
5455
exports = ["//checker/src/main/java/dev/cel/checker:standard_decl"],
5556
)
57+
58+
cel_android_library(
59+
name = "standard_decl_android",
60+
exports = ["//checker/src/main/java/dev/cel/checker:standard_decl_android"],
61+
)

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

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
load("@rules_java//java:defs.bzl", "java_library")
2+
load("//:cel_android_rules.bzl", "cel_android_library")
23

34
package(
45
default_applicable_licenses = [
@@ -69,7 +70,6 @@ java_library(
6970
":checker_legacy_environment",
7071
":proto_type_mask",
7172
":standard_decl",
72-
":type_provider_legacy_impl",
7373
"//common:cel_ast",
7474
"//common:cel_descriptor_util",
7575
"//common:cel_function_decl",
@@ -235,3 +235,23 @@ java_library(
235235
"@maven//:com_google_guava_guava",
236236
],
237237
)
238+
239+
cel_android_library(
240+
name = "standard_decl_android",
241+
srcs = [
242+
"CelStandardDeclarations.java",
243+
],
244+
tags = [
245+
],
246+
deps = [
247+
"//common:cel_function_decl_android",
248+
"//common:cel_overload_decl_android",
249+
"//common:cel_var_decl_android",
250+
"//common:operator_android",
251+
"//common/types:cel_types_android",
252+
"//common/types:type_providers_android",
253+
"//common/types:types_android",
254+
"@maven//:com_google_errorprone_error_prone_annotations",
255+
"@maven_android//:com_google_guava_guava",
256+
],
257+
)

checker/src/main/java/dev/cel/checker/CelCheckerLegacyImpl.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ public CelTypeProvider getTypeProvider() {
111111
}
112112

113113
@Override
114+
// TypeProvider is deprecated, but preserved for backwards compatibility.
115+
@SuppressWarnings("deprecation")
114116
public CelCheckerBuilder toCheckerBuilder() {
115117
CelCheckerBuilder builder =
116118
new Builder()
@@ -124,6 +126,10 @@ public CelCheckerBuilder toCheckerBuilder() {
124126
.addFileTypes(fileDescriptors)
125127
.addProtoTypeMasks(protoTypeMasks);
126128

129+
if (typeProvider != null) {
130+
builder.setTypeProvider(typeProvider);
131+
}
132+
127133
if (expectedResultType.isPresent()) {
128134
builder.setResultType(expectedResultType.get());
129135
}
@@ -162,11 +168,13 @@ public void accept(EnvVisitor envVisitor) {
162168
private Env getEnv(Errors errors) {
163169
Env env;
164170
if (overriddenStandardDeclarations != null) {
165-
env = Env.standard(overriddenStandardDeclarations, errors, typeProvider, celOptions);
171+
env =
172+
Env.standard(
173+
overriddenStandardDeclarations, errors, celTypeProvider, typeProvider, celOptions);
166174
} else if (standardEnvironmentEnabled) {
167-
env = Env.standard(errors, typeProvider, celOptions);
175+
env = Env.standard(errors, celTypeProvider, typeProvider, celOptions);
168176
} else {
169-
env = Env.unconfigured(errors, typeProvider, celOptions);
177+
env = Env.unconfigured(errors, celTypeProvider, typeProvider, celOptions);
170178
}
171179
identDeclarations.forEach(env::add);
172180
functionDeclarations.forEach(env::add);
@@ -459,20 +467,13 @@ public CelCheckerLegacyImpl build() {
459467
messageTypeProvider = protoTypeMaskTypeProvider;
460468
}
461469

462-
TypeProvider legacyProvider = new TypeProviderLegacyImpl(messageTypeProvider);
463-
if (customTypeProvider != null) {
464-
legacyProvider =
465-
new TypeProvider.CombinedTypeProvider(
466-
ImmutableList.of(customTypeProvider, legacyProvider));
467-
}
468-
469470
return new CelCheckerLegacyImpl(
470471
celOptions,
471472
container,
472473
identDeclarationSet,
473474
functionDeclarations.build(),
474475
Optional.fromNullable(expectedResultType),
475-
legacyProvider,
476+
customTypeProvider,
476477
messageTypeProvider,
477478
standardEnvironmentEnabled,
478479
standardDeclarations,

0 commit comments

Comments
 (0)