Add V0 support for floats and doubles

PiperOrigin-RevId: 547503785
pull/13287/head
Hong Shin 2 years ago committed by Copybara-Service
parent 533fbbb45e
commit 43778a5e2b
  1. 32
      rust/test/shared/accessors_test.rs
  2. 2
      src/google/protobuf/compiler/rust/accessors/accessors.cc
  3. 6
      src/google/protobuf/compiler/rust/naming.cc

@ -40,6 +40,8 @@ fn test_default_accessors() {
assert_eq!(msg.default_sint64(), 46);
assert_eq!(msg.default_uint32(), 43);
assert_eq!(msg.default_uint64(), 44);
assert_eq!(msg.default_float(), 51.5);
assert_eq!(msg.default_double(), 52000.0);
assert_eq!(msg.default_bool(), true);
}
@ -134,6 +136,36 @@ fn test_optional_uint64_accessors() {
assert_eq!(msg.optional_uint64(), 0);
}
#[test]
fn test_optional_float_accessors() {
let mut msg = TestAllTypes::new();
assert_eq!(msg.optional_float_opt(), None);
assert_eq!(msg.optional_float(), 0.0);
msg.optional_float_set(Some(3.14));
assert_eq!(msg.optional_float_opt(), Some(3.14));
assert_eq!(msg.optional_float(), 3.14);
msg.optional_float_set(None);
assert_eq!(msg.optional_float_opt(), None);
assert_eq!(msg.optional_float(), 0.0);
}
#[test]
fn test_optional_double_accessors() {
let mut msg = TestAllTypes::new();
assert_eq!(msg.optional_double_opt(), None);
assert_eq!(msg.optional_double(), 0.0);
msg.optional_double_set(Some(-10.99));
assert_eq!(msg.optional_double_opt(), Some(-10.99));
assert_eq!(msg.optional_double(), -10.99);
msg.optional_double_set(None);
assert_eq!(msg.optional_double_opt(), None);
assert_eq!(msg.optional_double(), 0.0);
}
#[test]
fn test_optional_bool_accessors() {
let mut msg = TestAllTypes::new();

@ -55,6 +55,8 @@ std::unique_ptr<AccessorGenerator> AccessorGenerator::For(
case FieldDescriptor::TYPE_SINT64:
case FieldDescriptor::TYPE_UINT32:
case FieldDescriptor::TYPE_UINT64:
case FieldDescriptor::TYPE_FLOAT:
case FieldDescriptor::TYPE_DOUBLE:
case FieldDescriptor::TYPE_BOOL:
if (field.desc().is_repeated()) return nullptr;
return ForSingularScalar(field);

@ -122,6 +122,10 @@ absl::string_view PrimitiveRsTypeName(Context<FieldDescriptor> field) {
return "u32";
case FieldDescriptor::TYPE_UINT64:
return "u64";
case FieldDescriptor::TYPE_FLOAT:
return "f32";
case FieldDescriptor::TYPE_DOUBLE:
return "f64";
case FieldDescriptor::TYPE_BYTES:
return "&[u8]";
default:
@ -143,6 +147,8 @@ bool IsSupportedFieldType(Context<FieldDescriptor> field) {
field.desc().type() == FieldDescriptor::TYPE_SINT64 ||
field.desc().type() == FieldDescriptor::TYPE_UINT32 ||
field.desc().type() == FieldDescriptor::TYPE_UINT64 ||
field.desc().type() == FieldDescriptor::TYPE_FLOAT ||
field.desc().type() == FieldDescriptor::TYPE_DOUBLE ||
field.desc().type() == FieldDescriptor::TYPE_BYTES);
}

Loading…
Cancel
Save