| 231 | } |
| 232 | |
| 233 | absl::StatusOr<size_t> ListIndexFromQualifier(const AttributeQualifier& qual) { |
| 234 | int64_t value = -1; |
| 235 | switch (qual.kind()) { |
| 236 | case Kind::kInt: |
| 237 | value = *qual.GetInt64Key(); |
| 238 | break; |
| 239 | default: |
| 240 | // TODO(uncreated-issue/51): type-checker will reject an unsigned literal, but |
| 241 | // should be supported as a dyn / variable. |
| 242 | return runtime_internal::CreateNoMatchingOverloadError( |
| 243 | cel::builtin::kIndex); |
| 244 | } |
| 245 | |
| 246 | if (value < 0) { |
| 247 | return absl::InvalidArgumentError("list index less than 0"); |
| 248 | } |
| 249 | |
| 250 | return static_cast<size_t>(value); |
| 251 | } |
| 252 | |
| 253 | absl::StatusOr<Value> MapKeyFromQualifier(const AttributeQualifier& qual, |
| 254 | google::protobuf::Arena* absl_nonnull arena) { |
no test coverage detected