|
29 | 29 | #include "common/value.h" |
30 | 30 | #include "eval/compiler/flat_expr_builder_extensions.h" |
31 | 31 | #include "eval/compiler/resolver.h" |
32 | | -#include "eval/eval/const_value_step.h" |
33 | 32 | #include "eval/eval/create_list_step.h" |
34 | 33 | #include "eval/eval/create_map_step.h" |
35 | 34 | #include "eval/eval/evaluator_core.h" |
@@ -58,10 +57,10 @@ using ::cel::runtime_internal::IssueCollector; |
58 | 57 | using ::cel::runtime_internal::NewTestingRuntimeEnv; |
59 | 58 | using ::cel::expr::ParsedExpr; |
60 | 59 | using ::google::api::expr::parser::Parse; |
61 | | -using ::google::api::expr::runtime::CreateConstValueStep; |
62 | 60 | using ::google::api::expr::runtime::CreateCreateListStep; |
63 | 61 | using ::google::api::expr::runtime::CreateCreateStructStepForMap; |
64 | 62 | using ::google::api::expr::runtime::ExecutionPath; |
| 63 | +using ::google::api::expr::runtime::ExpressionStep; |
65 | 64 | using ::google::api::expr::runtime::PlannerContext; |
66 | 65 | using ::google::api::expr::runtime::ProgramBuilder; |
67 | 66 | using ::google::api::expr::runtime::ProgramOptimizer; |
@@ -115,26 +114,25 @@ TEST_F(UpdatedConstantFoldingTest, SkipsTernary) { |
115 | 114 | program_builder.EnterSubexpression(&call); |
116 | 115 | // condition |
117 | 116 | program_builder.EnterSubexpression(&condition); |
118 | | - ASSERT_OK_AND_ASSIGN(auto step, |
119 | | - CreateConstValueStep(cel::BoolValue(true), -1)); |
120 | | - program_builder.AddStep(std::move(step)); |
| 117 | + program_builder.AddStep( |
| 118 | + ExpressionStep::MakeConstant(cel::BoolValue(true), condition.id())); |
121 | 119 | program_builder.ExitSubexpression(&condition); |
122 | 120 |
|
123 | 121 | // true |
124 | 122 | program_builder.EnterSubexpression(&true_branch); |
125 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::BoolValue(true), -1)); |
126 | | - program_builder.AddStep(std::move(step)); |
| 123 | + program_builder.AddStep( |
| 124 | + ExpressionStep::MakeConstant(cel::BoolValue(true), true_branch.id())); |
127 | 125 | program_builder.ExitSubexpression(&true_branch); |
128 | 126 |
|
129 | 127 | // false |
130 | 128 | program_builder.EnterSubexpression(&false_branch); |
131 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::BoolValue(true), -1)); |
132 | | - program_builder.AddStep(std::move(step)); |
| 129 | + program_builder.AddStep( |
| 130 | + ExpressionStep::MakeConstant(cel::BoolValue(true), false_branch.id())); |
133 | 131 | program_builder.ExitSubexpression(&false_branch); |
134 | 132 |
|
135 | 133 | // ternary. |
136 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::NullValue(), -1)); |
137 | | - program_builder.AddStep(std::move(step)); |
| 134 | + program_builder.AddStep( |
| 135 | + ExpressionStep::MakeConstant(cel::NullValue(), call.id())); |
138 | 136 | program_builder.ExitSubexpression(&call); |
139 | 137 |
|
140 | 138 | std::shared_ptr<google::protobuf::Arena> arena; |
@@ -179,21 +177,20 @@ TEST_F(UpdatedConstantFoldingTest, SkipsOr) { |
179 | 177 |
|
180 | 178 | // left |
181 | 179 | program_builder.EnterSubexpression(&left_condition); |
182 | | - ASSERT_OK_AND_ASSIGN(auto step, |
183 | | - CreateConstValueStep(cel::BoolValue(false), -1)); |
184 | | - program_builder.AddStep(std::move(step)); |
| 180 | + program_builder.AddStep( |
| 181 | + ExpressionStep::MakeConstant(cel::BoolValue(false), left_condition.id())); |
185 | 182 | program_builder.ExitSubexpression(&left_condition); |
186 | 183 |
|
187 | 184 | // right |
188 | 185 | program_builder.EnterSubexpression(&right_condition); |
189 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::BoolValue(true), -1)); |
190 | | - program_builder.AddStep(std::move(step)); |
| 186 | + program_builder.AddStep( |
| 187 | + ExpressionStep::MakeConstant(cel::BoolValue(true), right_condition.id())); |
191 | 188 | program_builder.ExitSubexpression(&right_condition); |
192 | 189 |
|
193 | 190 | // op |
194 | 191 | // Just a placeholder. |
195 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::NullValue(), -1)); |
196 | | - program_builder.AddStep(std::move(step)); |
| 192 | + program_builder.AddStep( |
| 193 | + ExpressionStep::MakeConstant(cel::NullValue(), call.id())); |
197 | 194 | program_builder.ExitSubexpression(&call); |
198 | 195 |
|
199 | 196 | std::shared_ptr<google::protobuf::Arena> arena; |
@@ -235,21 +232,20 @@ TEST_F(UpdatedConstantFoldingTest, SkipsAnd) { |
235 | 232 |
|
236 | 233 | // left |
237 | 234 | program_builder.EnterSubexpression(&left_condition); |
238 | | - ASSERT_OK_AND_ASSIGN(auto step, |
239 | | - CreateConstValueStep(cel::BoolValue(true), -1)); |
240 | | - program_builder.AddStep(std::move(step)); |
| 235 | + program_builder.AddStep( |
| 236 | + ExpressionStep::MakeConstant(cel::BoolValue(true), left_condition.id())); |
241 | 237 | program_builder.ExitSubexpression(&left_condition); |
242 | 238 |
|
243 | 239 | // right |
244 | 240 | program_builder.EnterSubexpression(&right_condition); |
245 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::BoolValue(false), -1)); |
246 | | - program_builder.AddStep(std::move(step)); |
| 241 | + program_builder.AddStep(ExpressionStep::MakeConstant(cel::BoolValue(false), |
| 242 | + right_condition.id())); |
247 | 243 | program_builder.ExitSubexpression(&right_condition); |
248 | 244 |
|
249 | 245 | // op |
250 | 246 | // Just a placeholder. |
251 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::NullValue(), -1)); |
252 | | - program_builder.AddStep(std::move(step)); |
| 247 | + program_builder.AddStep( |
| 248 | + ExpressionStep::MakeConstant(cel::NullValue(), call.id())); |
253 | 249 | program_builder.ExitSubexpression(&call); |
254 | 250 |
|
255 | 251 | std::shared_ptr<google::protobuf::Arena> arena; |
@@ -291,19 +287,21 @@ TEST_F(UpdatedConstantFoldingTest, CreatesList) { |
291 | 287 |
|
292 | 288 | // elem one |
293 | 289 | program_builder.EnterSubexpression(&elem_one); |
294 | | - ASSERT_OK_AND_ASSIGN(auto step, CreateConstValueStep(cel::IntValue(1L), 1)); |
295 | | - program_builder.AddStep(std::move(step)); |
| 290 | + program_builder.AddStep( |
| 291 | + ExpressionStep::MakeConstant(cel::IntValue(1L), elem_one.id())); |
296 | 292 | program_builder.ExitSubexpression(&elem_one); |
297 | 293 |
|
298 | 294 | // elem two |
299 | 295 | program_builder.EnterSubexpression(&elem_two); |
300 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::IntValue(2L), 2)); |
301 | | - program_builder.AddStep(std::move(step)); |
| 296 | + program_builder.AddStep( |
| 297 | + ExpressionStep::MakeConstant(cel::IntValue(2L), elem_two.id())); |
302 | 298 | program_builder.ExitSubexpression(&elem_two); |
303 | 299 |
|
304 | 300 | // createlist |
305 | | - ASSERT_OK_AND_ASSIGN(step, CreateCreateListStep(create_list.list_expr(), 3)); |
306 | | - program_builder.AddStep(std::move(step)); |
| 301 | + ASSERT_OK_AND_ASSIGN(auto step, |
| 302 | + CreateCreateListStep(create_list.list_expr())); |
| 303 | + program_builder.AddStep( |
| 304 | + ExpressionStep::MakeGenericStep(std::move(step), create_list.id())); |
307 | 305 | program_builder.ExitSubexpression(&create_list); |
308 | 306 |
|
309 | 307 | std::shared_ptr<google::protobuf::Arena> arena; |
@@ -349,37 +347,39 @@ TEST_F(UpdatedConstantFoldingTest, CreatesLargeList) { |
349 | 347 |
|
350 | 348 | // 0 |
351 | 349 | ASSERT_TRUE(program_builder.EnterSubexpression(&elem0) != nullptr); |
352 | | - ASSERT_OK_AND_ASSIGN(auto step, CreateConstValueStep(cel::IntValue(1L), 1)); |
353 | | - program_builder.AddStep(std::move(step)); |
| 350 | + program_builder.AddStep( |
| 351 | + ExpressionStep::MakeConstant(cel::IntValue(1L), elem0.id())); |
354 | 352 | program_builder.ExitSubexpression(&elem0); |
355 | 353 |
|
356 | 354 | // 1 |
357 | 355 | ASSERT_TRUE(program_builder.EnterSubexpression(&elem1)); |
358 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::IntValue(2L), 2)); |
359 | | - program_builder.AddStep(std::move(step)); |
| 356 | + program_builder.AddStep( |
| 357 | + ExpressionStep::MakeConstant(cel::IntValue(2L), elem1.id())); |
360 | 358 | program_builder.ExitSubexpression(&elem1); |
361 | 359 |
|
362 | 360 | // 2 |
363 | 361 | ASSERT_TRUE(program_builder.EnterSubexpression(&elem2) != nullptr); |
364 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::IntValue(3L), 3)); |
365 | | - program_builder.AddStep(std::move(step)); |
| 362 | + program_builder.AddStep( |
| 363 | + ExpressionStep::MakeConstant(cel::IntValue(3L), elem2.id())); |
366 | 364 | program_builder.ExitSubexpression(&elem2); |
367 | 365 |
|
368 | 366 | // 3 |
369 | 367 | ASSERT_TRUE(program_builder.EnterSubexpression(&elem3) != nullptr); |
370 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::IntValue(4L), 4)); |
371 | | - program_builder.AddStep(std::move(step)); |
| 368 | + program_builder.AddStep( |
| 369 | + ExpressionStep::MakeConstant(cel::IntValue(4L), elem3.id())); |
372 | 370 | program_builder.ExitSubexpression(&elem3); |
373 | 371 |
|
374 | 372 | // 4 |
375 | 373 | ASSERT_TRUE(program_builder.EnterSubexpression(&elem4) != nullptr); |
376 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::IntValue(5L), 5)); |
377 | | - program_builder.AddStep(std::move(step)); |
| 374 | + program_builder.AddStep( |
| 375 | + ExpressionStep::MakeConstant(cel::IntValue(5L), elem4.id())); |
378 | 376 | program_builder.ExitSubexpression(&elem4); |
379 | 377 |
|
380 | 378 | // createlist |
381 | | - ASSERT_OK_AND_ASSIGN(step, CreateCreateListStep(create_list.list_expr(), 6)); |
382 | | - program_builder.AddStep(std::move(step)); |
| 379 | + ASSERT_OK_AND_ASSIGN(auto step_large, |
| 380 | + CreateCreateListStep(create_list.list_expr())); |
| 381 | + program_builder.AddStep( |
| 382 | + ExpressionStep::MakeGenericStep(std::move(step_large), create_list.id())); |
383 | 383 | program_builder.ExitSubexpression(&create_list); |
384 | 384 |
|
385 | 385 | std::shared_ptr<google::protobuf::Arena> arena; |
@@ -426,21 +426,22 @@ TEST_F(UpdatedConstantFoldingTest, CreatesMap) { |
426 | 426 |
|
427 | 427 | // key |
428 | 428 | program_builder.EnterSubexpression(&key); |
429 | | - ASSERT_OK_AND_ASSIGN(auto step, CreateConstValueStep(cel::IntValue(1L), 1)); |
430 | | - program_builder.AddStep(std::move(step)); |
| 429 | + program_builder.AddStep( |
| 430 | + ExpressionStep::MakeConstant(cel::IntValue(1L), key.id())); |
431 | 431 | program_builder.ExitSubexpression(&key); |
432 | 432 |
|
433 | 433 | // value |
434 | 434 | program_builder.EnterSubexpression(&value); |
435 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::IntValue(2L), 2)); |
436 | | - program_builder.AddStep(std::move(step)); |
| 435 | + program_builder.AddStep( |
| 436 | + ExpressionStep::MakeConstant(cel::IntValue(2L), value.id())); |
437 | 437 | program_builder.ExitSubexpression(&value); |
438 | 438 |
|
439 | 439 | // create map |
440 | 440 | ASSERT_OK_AND_ASSIGN( |
441 | | - step, CreateCreateStructStepForMap(create_map.map_expr().entries().size(), |
442 | | - {}, 3)); |
443 | | - program_builder.AddStep(std::move(step)); |
| 441 | + auto step_map, |
| 442 | + CreateCreateStructStepForMap(create_map.map_expr().entries().size(), {})); |
| 443 | + program_builder.AddStep( |
| 444 | + ExpressionStep::MakeGenericStep(std::move(step_map), create_map.id())); |
444 | 445 | program_builder.ExitSubexpression(&create_map); |
445 | 446 |
|
446 | 447 | std::shared_ptr<google::protobuf::Arena> arena; |
@@ -481,22 +482,22 @@ TEST_F(UpdatedConstantFoldingTest, CreatesInvalidMap) { |
481 | 482 |
|
482 | 483 | // key |
483 | 484 | program_builder.EnterSubexpression(&key); |
484 | | - ASSERT_OK_AND_ASSIGN(auto step, |
485 | | - CreateConstValueStep(cel::DoubleValue(1.0), 1)); |
486 | | - program_builder.AddStep(std::move(step)); |
| 485 | + program_builder.AddStep( |
| 486 | + ExpressionStep::MakeConstant(cel::DoubleValue(1.0), key.id())); |
487 | 487 | program_builder.ExitSubexpression(&key); |
488 | 488 |
|
489 | 489 | // value |
490 | 490 | program_builder.EnterSubexpression(&value); |
491 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::IntValue(2L), 2)); |
492 | | - program_builder.AddStep(std::move(step)); |
| 491 | + program_builder.AddStep( |
| 492 | + ExpressionStep::MakeConstant(cel::IntValue(2L), value.id())); |
493 | 493 | program_builder.ExitSubexpression(&value); |
494 | 494 |
|
495 | 495 | // create map |
496 | 496 | ASSERT_OK_AND_ASSIGN( |
497 | | - step, CreateCreateStructStepForMap(create_map.map_expr().entries().size(), |
498 | | - {}, 3)); |
499 | | - program_builder.AddStep(std::move(step)); |
| 497 | + auto step_invalid_map, |
| 498 | + CreateCreateStructStepForMap(create_map.map_expr().entries().size(), {})); |
| 499 | + program_builder.AddStep(ExpressionStep::MakeGenericStep( |
| 500 | + std::move(step_invalid_map), create_map.id())); |
500 | 501 | program_builder.ExitSubexpression(&create_map); |
501 | 502 |
|
502 | 503 | std::shared_ptr<google::protobuf::Arena> arena; |
@@ -536,21 +537,20 @@ TEST_F(UpdatedConstantFoldingTest, ErrorsOnUnexpectedOrder) { |
536 | 537 | program_builder.EnterSubexpression(&call); |
537 | 538 | // left |
538 | 539 | program_builder.EnterSubexpression(&left_condition); |
539 | | - ASSERT_OK_AND_ASSIGN(auto step, |
540 | | - CreateConstValueStep(cel::BoolValue(true), -1)); |
541 | | - program_builder.AddStep(std::move(step)); |
| 540 | + program_builder.AddStep( |
| 541 | + ExpressionStep::MakeConstant(cel::BoolValue(true), left_condition.id())); |
542 | 542 | program_builder.ExitSubexpression(&left_condition); |
543 | 543 |
|
544 | 544 | // right |
545 | 545 | program_builder.EnterSubexpression(&right_condition); |
546 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::BoolValue(false), -1)); |
547 | | - program_builder.AddStep(std::move(step)); |
| 546 | + program_builder.AddStep(ExpressionStep::MakeConstant(cel::BoolValue(false), |
| 547 | + right_condition.id())); |
548 | 548 | program_builder.ExitSubexpression(&right_condition); |
549 | 549 |
|
550 | 550 | // op |
551 | 551 | // Just a placeholder. |
552 | | - ASSERT_OK_AND_ASSIGN(step, CreateConstValueStep(cel::NullValue(), -1)); |
553 | | - program_builder.AddStep(std::move(step)); |
| 552 | + program_builder.AddStep( |
| 553 | + ExpressionStep::MakeConstant(cel::NullValue(), call.id())); |
554 | 554 | program_builder.ExitSubexpression(&call); |
555 | 555 |
|
556 | 556 | std::shared_ptr<google::protobuf::Arena> arena; |
|
0 commit comments