MCPcopy Create free account
hub / github.com/cel-expr/cel-cpp / MaybeMakeBindRecursive

Method MaybeMakeBindRecursive

eval/compiler/flat_expr_builder.cc:1196–1217  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1194 }
1195
1196 void MaybeMakeBindRecursive(const cel::Expr* expr,
1197 const cel::ComprehensionExpr* comprehension,
1198 size_t accu_slot) {
1199 if (!PlanRecursiveProgram()) {
1200 return;
1201 }
1202
1203 auto* result_plan =
1204 program_builder_.GetSubexpression(&comprehension->result());
1205
1206 if (result_plan == nullptr || !result_plan->IsRecursive()) {
1207 SetProgressStatusError(FailedRecursivePlanning());
1208 return;
1209 }
1210
1211 int result_depth = result_plan->recursive_program().depth;
1212
1213 auto program = result_plan->ExtractRecursiveProgram();
1214 SetRecursiveStep(
1215 CreateDirectBindStep(accu_slot, std::move(program.step), expr->id()),
1216 result_depth + 1);
1217 }
1218
1219 void MaybeMakeComprehensionRecursive(
1220 const cel::Expr* expr, const cel::ComprehensionExpr* comprehension,

Callers 1

PostVisitMethod · 0.80

Calls 5

FailedRecursivePlanningFunction · 0.85
CreateDirectBindStepFunction · 0.85
IsRecursiveMethod · 0.80
idMethod · 0.45

Tested by

no test coverage detected