| 2118 | } |
| 2119 | |
| 2120 | FlatExprVisitor::CallHandlerResult |
| 2121 | FlatExprVisitor::HandleHeterogeneousEqualityIn(const cel::Expr& expr, |
| 2122 | const cel::CallExpr& call) { |
| 2123 | if (!ValidateOrError(call.args().size() == 2 && !call.has_target(), |
| 2124 | "unexpected number of args for builtin 'in' operator")) { |
| 2125 | return CallHandlerResult::kIntercepted; |
| 2126 | } |
| 2127 | |
| 2128 | if (auto depth = RecursionEligible(); depth.has_value()) { |
| 2129 | auto args = ExtractRecursiveDependencies(); |
| 2130 | if (args.size() != 2) { |
| 2131 | SetProgressStatusError(absl::InvalidArgumentError( |
| 2132 | "unexpected number of args for builtin 'in' operator")); |
| 2133 | return CallHandlerResult::kIntercepted; |
| 2134 | } |
| 2135 | SetRecursiveStep( |
| 2136 | CreateDirectInStep(std::move(args[0]), std::move(args[1]), expr.id()), |
| 2137 | *depth + 1); |
| 2138 | return CallHandlerResult::kIntercepted; |
| 2139 | } |
| 2140 | |
| 2141 | AddStep(CreateInStep(expr.id())); |
| 2142 | return CallHandlerResult::kIntercepted; |
| 2143 | } |
| 2144 | |
| 2145 | void BinaryCondVisitor::PreVisit(const cel::Expr* expr) { |
| 2146 | switch (cond_) { |
nothing calls this directly
no test coverage detected