| 1028 | } // namespace common_internal |
| 1029 | |
| 1030 | absl::Status ModernValue(google::protobuf::Arena* arena, |
| 1031 | google::api::expr::runtime::CelValue legacy_value, |
| 1032 | Value& result) { |
| 1033 | switch (legacy_value.type()) { |
| 1034 | case CelValue::Type::kNullType: |
| 1035 | result = NullValue{}; |
| 1036 | return absl::OkStatus(); |
| 1037 | case CelValue::Type::kBool: |
| 1038 | result = BoolValue{legacy_value.BoolOrDie()}; |
| 1039 | return absl::OkStatus(); |
| 1040 | case CelValue::Type::kInt64: |
| 1041 | result = IntValue{legacy_value.Int64OrDie()}; |
| 1042 | return absl::OkStatus(); |
| 1043 | case CelValue::Type::kUint64: |
| 1044 | result = UintValue{legacy_value.Uint64OrDie()}; |
| 1045 | return absl::OkStatus(); |
| 1046 | case CelValue::Type::kDouble: |
| 1047 | result = DoubleValue{legacy_value.DoubleOrDie()}; |
| 1048 | return absl::OkStatus(); |
| 1049 | case CelValue::Type::kString: |
| 1050 | result = StringValue(Borrower::Arena(arena), |
| 1051 | legacy_value.StringOrDie().value()); |
| 1052 | return absl::OkStatus(); |
| 1053 | case CelValue::Type::kBytes: |
| 1054 | result = |
| 1055 | BytesValue(Borrower::Arena(arena), legacy_value.BytesOrDie().value()); |
| 1056 | return absl::OkStatus(); |
| 1057 | case CelValue::Type::kMessage: { |
| 1058 | auto message_wrapper = legacy_value.MessageWrapperOrDie(); |
| 1059 | result = common_internal::LegacyStructValue( |
| 1060 | google::protobuf::DownCastMessage<google::protobuf::Message>( |
| 1061 | message_wrapper.message_ptr()), |
| 1062 | message_wrapper.legacy_type_info()); |
| 1063 | return absl::OkStatus(); |
| 1064 | } |
| 1065 | case CelValue::Type::kDuration: |
| 1066 | result = UnsafeDurationValue(legacy_value.DurationOrDie()); |
| 1067 | return absl::OkStatus(); |
| 1068 | case CelValue::Type::kTimestamp: |
| 1069 | result = UnsafeTimestampValue(legacy_value.TimestampOrDie()); |
| 1070 | return absl::OkStatus(); |
| 1071 | case CelValue::Type::kList: |
| 1072 | result = |
| 1073 | ListValue(common_internal::LegacyListValue(legacy_value.ListOrDie())); |
| 1074 | return absl::OkStatus(); |
| 1075 | case CelValue::Type::kMap: |
| 1076 | result = |
| 1077 | MapValue(common_internal::LegacyMapValue(legacy_value.MapOrDie())); |
| 1078 | return absl::OkStatus(); |
| 1079 | case CelValue::Type::kUnknownSet: |
| 1080 | result = UnknownValue{*legacy_value.UnknownSetOrDie()}; |
| 1081 | return absl::OkStatus(); |
| 1082 | case CelValue::Type::kCelType: { |
| 1083 | auto type_name = legacy_value.CelTypeOrDie().value(); |
| 1084 | if (type_name.empty()) { |
| 1085 | return absl::InvalidArgumentError("empty type name in CelValue"); |
| 1086 | } |
| 1087 | result = TypeValue(common_internal::LegacyRuntimeType(type_name)); |
no test coverage detected