| 452 | } |
| 453 | |
| 454 | absl::Status AddRelationOps(TypeCheckerBuilder& builder) { |
| 455 | FunctionDecl less_op; |
| 456 | less_op.set_name(StandardFunctions::kLess); |
| 457 | // Numeric types |
| 458 | CEL_RETURN_IF_ERROR(less_op.AddOverload(MakeOverloadDecl( |
| 459 | StandardOverloadIds::kLessInt, BoolType(), IntType(), IntType()))); |
| 460 | CEL_RETURN_IF_ERROR(less_op.AddOverload(MakeOverloadDecl( |
| 461 | StandardOverloadIds::kLessUint, BoolType(), UintType(), UintType()))); |
| 462 | CEL_RETURN_IF_ERROR(less_op.AddOverload( |
| 463 | MakeOverloadDecl(StandardOverloadIds::kLessDouble, BoolType(), |
| 464 | DoubleType(), DoubleType()))); |
| 465 | |
| 466 | // Non-numeric types |
| 467 | CEL_RETURN_IF_ERROR(less_op.AddOverload(MakeOverloadDecl( |
| 468 | StandardOverloadIds::kLessBool, BoolType(), BoolType(), BoolType()))); |
| 469 | CEL_RETURN_IF_ERROR(less_op.AddOverload( |
| 470 | MakeOverloadDecl(StandardOverloadIds::kLessString, BoolType(), |
| 471 | StringType(), StringType()))); |
| 472 | CEL_RETURN_IF_ERROR(less_op.AddOverload(MakeOverloadDecl( |
| 473 | StandardOverloadIds::kLessBytes, BoolType(), BytesType(), BytesType()))); |
| 474 | CEL_RETURN_IF_ERROR(less_op.AddOverload( |
| 475 | MakeOverloadDecl(StandardOverloadIds::kLessDuration, BoolType(), |
| 476 | DurationType(), DurationType()))); |
| 477 | CEL_RETURN_IF_ERROR(less_op.AddOverload( |
| 478 | MakeOverloadDecl(StandardOverloadIds::kLessTimestamp, BoolType(), |
| 479 | TimestampType(), TimestampType()))); |
| 480 | |
| 481 | FunctionDecl greater_op; |
| 482 | greater_op.set_name(StandardFunctions::kGreater); |
| 483 | // Numeric types |
| 484 | CEL_RETURN_IF_ERROR(greater_op.AddOverload(MakeOverloadDecl( |
| 485 | StandardOverloadIds::kGreaterInt, BoolType(), IntType(), IntType()))); |
| 486 | CEL_RETURN_IF_ERROR(greater_op.AddOverload(MakeOverloadDecl( |
| 487 | StandardOverloadIds::kGreaterUint, BoolType(), UintType(), UintType()))); |
| 488 | CEL_RETURN_IF_ERROR(greater_op.AddOverload( |
| 489 | MakeOverloadDecl(StandardOverloadIds::kGreaterDouble, BoolType(), |
| 490 | DoubleType(), DoubleType()))); |
| 491 | |
| 492 | // Non-numeric types |
| 493 | CEL_RETURN_IF_ERROR(greater_op.AddOverload(MakeOverloadDecl( |
| 494 | StandardOverloadIds::kGreaterBool, BoolType(), BoolType(), BoolType()))); |
| 495 | CEL_RETURN_IF_ERROR(greater_op.AddOverload( |
| 496 | MakeOverloadDecl(StandardOverloadIds::kGreaterString, BoolType(), |
| 497 | StringType(), StringType()))); |
| 498 | CEL_RETURN_IF_ERROR(greater_op.AddOverload( |
| 499 | MakeOverloadDecl(StandardOverloadIds::kGreaterBytes, BoolType(), |
| 500 | BytesType(), BytesType()))); |
| 501 | CEL_RETURN_IF_ERROR(greater_op.AddOverload( |
| 502 | MakeOverloadDecl(StandardOverloadIds::kGreaterDuration, BoolType(), |
| 503 | DurationType(), DurationType()))); |
| 504 | CEL_RETURN_IF_ERROR(greater_op.AddOverload( |
| 505 | MakeOverloadDecl(StandardOverloadIds::kGreaterTimestamp, BoolType(), |
| 506 | TimestampType(), TimestampType()))); |
| 507 | |
| 508 | FunctionDecl less_equals_op; |
| 509 | less_equals_op.set_name(StandardFunctions::kLessOrEqual); |
| 510 | // Numeric types |
| 511 | CEL_RETURN_IF_ERROR(less_equals_op.AddOverload(MakeOverloadDecl( |
no test coverage detected