| 2093 | } |
| 2094 | |
| 2095 | FlatExprVisitor::CallHandlerResult FlatExprVisitor::HandleHeterogeneousEquality( |
| 2096 | const cel::Expr& expr, const cel::CallExpr& call, bool inequality) { |
| 2097 | if (!ValidateOrError( |
| 2098 | call.args().size() == 2 && !call.has_target(), |
| 2099 | "unexpected number of args for builtin equality operator")) { |
| 2100 | return CallHandlerResult::kIntercepted; |
| 2101 | } |
| 2102 | |
| 2103 | if (auto depth = RecursionEligible(); depth.has_value()) { |
| 2104 | auto args = ExtractRecursiveDependencies(); |
| 2105 | if (args.size() != 2) { |
| 2106 | SetProgressStatusError(absl::InvalidArgumentError( |
| 2107 | "unexpected number of args for builtin equality operator")); |
| 2108 | return CallHandlerResult::kIntercepted; |
| 2109 | } |
| 2110 | SetRecursiveStep( |
| 2111 | CreateDirectEqualityStep(std::move(args[0]), std::move(args[1]), |
| 2112 | inequality, expr.id()), |
| 2113 | *depth + 1); |
| 2114 | return CallHandlerResult::kIntercepted; |
| 2115 | } |
| 2116 | AddStep(CreateEqualityStep(inequality, expr.id())); |
| 2117 | return CallHandlerResult::kIntercepted; |
| 2118 | } |
| 2119 | |
| 2120 | FlatExprVisitor::CallHandlerResult |
| 2121 | FlatExprVisitor::HandleHeterogeneousEqualityIn(const cel::Expr& expr, |
nothing calls this directly
no test coverage detected