| 185 | } |
| 186 | |
| 187 | absl::StatusOr<std::string> MakeOverloadSignature( |
| 188 | std::string_view function_name, const std::vector<Type>& args, |
| 189 | bool is_member) { |
| 190 | std::string result; |
| 191 | if (is_member) { |
| 192 | if (!args.empty()) { |
| 193 | CEL_RETURN_IF_ERROR(AppendTypeDesc(&result, args[0])); |
| 194 | } else { |
| 195 | return absl::InvalidArgumentError("Member function with no receiver"); |
| 196 | } |
| 197 | result.push_back('.'); |
| 198 | } |
| 199 | AppendEscaped(&result, function_name, /*escape_dot=*/true); |
| 200 | result.push_back('('); |
| 201 | for (size_t i = is_member ? 1 : 0; i < args.size(); ++i) { |
| 202 | CEL_RETURN_IF_ERROR(AppendTypeDesc(&result, args[i])); |
| 203 | if (i < args.size() - 1) { |
| 204 | result.push_back(','); |
| 205 | } |
| 206 | } |
| 207 | result.push_back(')'); |
| 208 | |
| 209 | return result; |
| 210 | } |
| 211 | } // namespace cel::common_internal |