Append .0 to unsuffixed float if it would otherwise become int token

This commit is contained in:
David Tolnay 2021-10-25 20:25:30 -07:00
parent ffba430924
commit c5025f0e4e
No known key found for this signature in database
GPG key ID: F9BA143B95FF6D82
2 changed files with 14 additions and 2 deletions

View file

@ -1074,7 +1074,11 @@ impl Literal {
if !n.is_finite() {
panic!("Invalid float literal {}", n);
}
Literal(bridge::client::Literal::float(&n.to_string()))
let mut repr = n.to_string();
if !repr.contains('.') {
repr.push_str(".0");
}
Literal(bridge::client::Literal::float(&repr))
}
/// Creates a new suffixed floating-point literal.
@ -1115,7 +1119,11 @@ impl Literal {
if !n.is_finite() {
panic!("Invalid float literal {}", n);
}
Literal(bridge::client::Literal::float(&n.to_string()))
let mut repr = n.to_string();
if !repr.contains('.') {
repr.push_str(".0");
}
Literal(bridge::client::Literal::float(&repr))
}
/// Creates a new suffixed floating-point literal.

View file

@ -8,6 +8,10 @@ pub fn test() {
fn test_display_literal() {
assert_eq!(Literal::isize_unsuffixed(-10).to_string(), "-10");
assert_eq!(Literal::isize_suffixed(-10).to_string(), "-10isize");
assert_eq!(Literal::f32_unsuffixed(-10.0).to_string(), "-10.0");
assert_eq!(Literal::f32_suffixed(-10.0).to_string(), "-10f32");
assert_eq!(Literal::f64_unsuffixed(-10.0).to_string(), "-10.0");
assert_eq!(Literal::f64_suffixed(-10.0).to_string(), "-10f64");
}
fn test_parse_literal() {