Merge pull request #2733 from jamessan/nan-decimal

Only format Unexpected::Float with decimal point if it is finite
This commit is contained in:
David Tolnay 2024-05-01 11:57:52 -04:00 committed by GitHub
commit 2d973c1805
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 7 deletions

View File

@ -2312,13 +2312,17 @@ impl Display for WithDecimalPoint {
}
}
let mut writer = LookForDecimalPoint {
formatter,
has_decimal_point: false,
};
tri!(write!(writer, "{}", self.0));
if !writer.has_decimal_point {
tri!(formatter.write_str(".0"));
if self.0.is_finite() {
let mut writer = LookForDecimalPoint {
formatter,
has_decimal_point: false,
};
tri!(write!(writer, "{}", self.0));
if !writer.has_decimal_point {
tri!(formatter.write_str(".0"));
}
} else {
tri!(write!(formatter, "{}", self.0));
}
Ok(())
}

View File

@ -1438,6 +1438,14 @@ fn test_integer_from_float() {
);
}
#[test]
fn test_nan_no_decimal_point() {
assert_de_tokens_error::<isize>(
&[Token::F32(f32::NAN)],
"invalid type: floating point `NaN`, expected isize",
);
}
#[test]
fn test_unit_struct_from_seq() {
assert_de_tokens_error::<UnitStruct>(