Skip to content

Commit 99508b0

Browse files
maskri17copybara-github
authored andcommitted
AST changes to support two variable comprehensions
PiperOrigin-RevId: 790823631
1 parent 86ad379 commit 99508b0

File tree

13 files changed

+179
-638
lines changed

13 files changed

+179
-638
lines changed

common/src/main/java/dev/cel/common/ast/BUILD.bazel

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ java_library(
5252
"@maven//:com_google_errorprone_error_prone_annotations",
5353
"@maven//:com_google_guava_guava",
5454
"@maven//:com_google_protobuf_protobuf_java",
55-
"@maven//:org_jspecify_jspecify",
5655
"@maven_android//:com_google_protobuf_protobuf_javalite",
5756
],
5857
)
@@ -139,7 +138,6 @@ cel_android_library(
139138
"//:auto_value",
140139
"//common/annotations",
141140
"@maven//:com_google_errorprone_error_prone_annotations",
142-
"@maven//:org_jspecify_jspecify",
143141
"@maven_android//:com_google_guava_guava",
144142
"@maven_android//:com_google_protobuf_protobuf_javalite",
145143
],

common/src/main/java/dev/cel/common/ast/CelExpr.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import com.google.errorprone.annotations.CanIgnoreReturnValue;
2424
import com.google.errorprone.annotations.CheckReturnValue;
2525
import com.google.errorprone.annotations.Immutable;
26-
import dev.cel.common.ast.CelExpr.ExprKind.Kind;
2726
import java.util.ArrayList;
2827
import java.util.Arrays;
2928
import java.util.Optional;
@@ -902,6 +901,9 @@ public abstract static class CelComprehension implements Expression.Comprehensio
902901
@Override
903902
public abstract String iterVar();
904903

904+
@Override
905+
public abstract String iterVar2();
906+
905907
@Override
906908
public abstract CelExpr iterRange();
907909

@@ -937,6 +939,8 @@ public abstract static class Builder {
937939

938940
public abstract Builder setIterVar(String value);
939941

942+
public abstract Builder setIterVar2(String value);
943+
940944
public abstract Builder setIterRange(CelExpr value);
941945

942946
public abstract Builder setAccuVar(String value);
@@ -958,6 +962,7 @@ public abstract static class Builder {
958962
public static Builder newBuilder() {
959963
return new AutoValue_CelExpr_CelComprehension.Builder()
960964
.setIterVar("")
965+
.setIterVar2("")
961966
.setIterRange(CelExpr.newBuilder().build())
962967
.setAccuVar("")
963968
.setAccuInit(CelExpr.newBuilder().build())
@@ -1073,12 +1078,36 @@ public static CelExpr ofComprehension(
10731078
CelExpr loopCondition,
10741079
CelExpr loopStep,
10751080
CelExpr result) {
1081+
return ofComprehension(
1082+
id,
1083+
iterVar,
1084+
/* iterVar2= */ "",
1085+
iterRange,
1086+
accuVar,
1087+
accuInit,
1088+
loopCondition,
1089+
loopStep,
1090+
result);
1091+
}
1092+
1093+
@SuppressWarnings("TooManyParameters")
1094+
public static CelExpr ofComprehension(
1095+
long id,
1096+
String iterVar,
1097+
String iterVar2,
1098+
CelExpr iterRange,
1099+
String accuVar,
1100+
CelExpr accuInit,
1101+
CelExpr loopCondition,
1102+
CelExpr loopStep,
1103+
CelExpr result) {
10761104
return newBuilder()
10771105
.setId(id)
10781106
.setExprKind(
10791107
AutoOneOf_CelExpr_ExprKind.comprehension(
10801108
CelComprehension.newBuilder()
10811109
.setIterVar(iterVar)
1110+
.setIterVar2(iterVar2)
10821111
.setIterRange(iterRange)
10831112
.setAccuVar(accuVar)
10841113
.setAccuInit(accuInit)

common/src/main/java/dev/cel/common/ast/CelExprConverter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public static Expr fromCelExpr(CelExpr celExpr) {
8484
return expr.setComprehensionExpr(
8585
Comprehension.newBuilder()
8686
.setIterVar(celComprehension.iterVar())
87+
.setIterVar2(celComprehension.iterVar2())
8788
.setIterRange(fromCelExpr(celComprehension.iterRange()))
8889
.setAccuVar(celComprehension.accuVar())
8990
.setAccuInit(fromCelExpr(celComprehension.accuInit()))
@@ -132,6 +133,7 @@ public static CelExpr fromExpr(Expr expr) {
132133
return CelExpr.ofComprehension(
133134
expr.getId(),
134135
comprehensionExpr.getIterVar(),
136+
comprehensionExpr.getIterVar2(),
135137
fromExpr(comprehensionExpr.getIterRange()),
136138
comprehensionExpr.getAccuVar(),
137139
fromExpr(comprehensionExpr.getAccuInit()),

0 commit comments

Comments
 (0)