Invoked after all child nodes are processed.
| 1263 | |
| 1264 | // Invoked after all child nodes are processed. |
| 1265 | void PostVisitCall(const cel::Expr& expr, |
| 1266 | const cel::CallExpr& call_expr) override { |
| 1267 | if (!progress_status_.ok()) { |
| 1268 | return; |
| 1269 | } |
| 1270 | |
| 1271 | auto cond_visitor = FindCondVisitor(&expr); |
| 1272 | if (cond_visitor) { |
| 1273 | cond_visitor->PostVisit(&expr); |
| 1274 | cond_visitor_stack_.pop(); |
| 1275 | return; |
| 1276 | } |
| 1277 | |
| 1278 | // Check if the call is intercepted by a custom handler. |
| 1279 | if (auto handler = call_handlers_.find(call_expr.function()); |
| 1280 | handler != call_handlers_.end()) { |
| 1281 | CallHandlerResult result = handler->second(expr, call_expr); |
| 1282 | if (result == CallHandlerResult::kIntercepted) { |
| 1283 | return; |
| 1284 | } // otherwise, apply default function handling. |
| 1285 | } |
| 1286 | |
| 1287 | AddResolvedFunctionStep(&call_expr, &expr, call_expr.function()); |
| 1288 | } |
| 1289 | |
| 1290 | void PreVisitComprehension( |
| 1291 | const cel::Expr& expr, |