| 117 | }; |
| 118 | |
| 119 | absl::Status RegisterOptionalDecls(TypeCheckerBuilder& builder, int version) { |
| 120 | CEL_ASSIGN_OR_RETURN( |
| 121 | auto of, |
| 122 | MakeFunctionDecl(OptionalNames::kOptionalOf, |
| 123 | MakeOverloadDecl(OptionalOverloads::kOptionalOf, |
| 124 | OptionalOfV(), TypeParamType("V")))); |
| 125 | |
| 126 | CEL_ASSIGN_OR_RETURN( |
| 127 | auto of_non_zero, |
| 128 | MakeFunctionDecl( |
| 129 | OptionalNames::kOptionalOfNonZeroValue, |
| 130 | MakeOverloadDecl(OptionalOverloads::kOptionalOfNonZeroValue, |
| 131 | OptionalOfV(), TypeParamType("V")))); |
| 132 | |
| 133 | CEL_ASSIGN_OR_RETURN( |
| 134 | auto none, |
| 135 | MakeFunctionDecl( |
| 136 | OptionalNames::kOptionalNone, |
| 137 | MakeOverloadDecl(OptionalOverloads::kOptionalNone, OptionalOfV()))); |
| 138 | |
| 139 | CEL_ASSIGN_OR_RETURN( |
| 140 | auto value, MakeFunctionDecl(OptionalNames::kOptionalValue, |
| 141 | MakeMemberOverloadDecl( |
| 142 | OptionalOverloads::kOptionalValue, |
| 143 | TypeParamType("V"), OptionalOfV()))); |
| 144 | |
| 145 | CEL_ASSIGN_OR_RETURN( |
| 146 | auto has_value, MakeFunctionDecl(OptionalNames::kOptionalHasValue, |
| 147 | MakeMemberOverloadDecl( |
| 148 | OptionalOverloads::kOptionalHasValue, |
| 149 | BoolType(), OptionalOfV()))); |
| 150 | |
| 151 | CEL_ASSIGN_OR_RETURN( |
| 152 | auto or_, |
| 153 | MakeFunctionDecl( |
| 154 | OptionalNames::kOptionalOr, |
| 155 | MakeMemberOverloadDecl(OptionalOverloads::kOptionalOr, OptionalOfV(), |
| 156 | OptionalOfV(), OptionalOfV()))); |
| 157 | |
| 158 | CEL_ASSIGN_OR_RETURN(auto or_value, |
| 159 | MakeFunctionDecl(OptionalNames::kOptionalOrValue, |
| 160 | MakeMemberOverloadDecl( |
| 161 | OptionalOverloads::kOptionalOrValue, |
| 162 | TypeParamType("V"), OptionalOfV(), |
| 163 | TypeParamType("V")))); |
| 164 | |
| 165 | // This is special cased by the type checker -- just adding a Decl to prevent |
| 166 | // accidental user overloading. |
| 167 | CEL_ASSIGN_OR_RETURN( |
| 168 | auto select, |
| 169 | MakeFunctionDecl( |
| 170 | OptionalNames::kOptionalSelect, |
| 171 | MakeOverloadDecl(OptionalOverloads::kOptionalSelect, OptionalOfV(), |
| 172 | DynType(), StringType()))); |
| 173 | |
| 174 | CEL_ASSIGN_OR_RETURN( |
| 175 | auto opt_index, |
| 176 | MakeFunctionDecl( |
no test coverage detected