Skip to content

Commit 2f0944e

Browse files
jnthntatumcopybara-github
authored andcommitted
Remove constraint that block initializer is non-empty.
PiperOrigin-RevId: 922222081
1 parent e8f6c48 commit 2f0944e

2 files changed

Lines changed: 7 additions & 10 deletions

File tree

eval/compiler/flat_expr_builder.cc

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,11 +1047,7 @@ class FlatExprVisitor : public cel::AstVisitor {
10471047
}
10481048
const auto& list_expr = call_expr.args().front().list_expr();
10491049
block.size = list_expr.elements().size();
1050-
if (block.size == 0) {
1051-
SetProgressStatusError(absl::InvalidArgumentError(
1052-
"malformed cel.@block: list of bound expressions is empty"));
1053-
return;
1054-
}
1050+
10551051
block.bindings_set.reserve(block.size);
10561052
for (const auto& list_expr_element : list_expr.elements()) {
10571053
if (list_expr_element.optional()) {
@@ -2052,7 +2048,9 @@ FlatExprVisitor::CallHandlerResult FlatExprVisitor::HandleBlock(
20522048
}
20532049

20542050
// Otherwise, iterative plan.
2055-
AddStep(CreateClearSlotsStep(block.index, block.slot_count, expr.id()));
2051+
if (block.slot_count > 0) {
2052+
AddStep(CreateClearSlotsStep(block.index, block.slot_count, expr.id()));
2053+
}
20562054

20572055
return CallHandlerResult::kIntercepted;
20582056
}

eval/compiler/flat_expr_builder_test.cc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2820,6 +2820,7 @@ TEST(FlatExprBuilderTest, BlockNotListOfBoundExpressions) {
28202820

28212821
TEST(FlatExprBuilderTest, BlockEmptyListOfBoundExpressions) {
28222822
ParsedExpr parsed_expr;
2823+
// Allowed, but degenerate case.
28232824
ASSERT_TRUE(google::protobuf::TextFormat::ParseFromString(
28242825
R"pb(
28252826
expr: {
@@ -2835,10 +2836,8 @@ TEST(FlatExprBuilderTest, BlockEmptyListOfBoundExpressions) {
28352836
CelExpressionBuilderFlatImpl builder(NewTestingRuntimeEnv());
28362837
EXPECT_THAT(
28372838
builder.CreateExpression(&parsed_expr.expr(), &parsed_expr.source_info()),
2838-
StatusIs(
2839-
absl::StatusCode::kInvalidArgument,
2840-
HasSubstr(
2841-
"malformed cel.@block: list of bound expressions is empty")));
2839+
StatusIs(absl::StatusCode::kInvalidArgument,
2840+
HasSubstr("invalid @index greater than number of bindings:")));
28422841
}
28432842

28442843
TEST(FlatExprBuilderTest, BlockOptionalListOfBoundExpressions) {

0 commit comments

Comments
 (0)