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() { if !n.is_finite() {
panic!("Invalid float literal {}", n); 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. /// Creates a new suffixed floating-point literal.
@ -1115,7 +1119,11 @@ impl Literal {
if !n.is_finite() { if !n.is_finite() {
panic!("Invalid float literal {}", n); 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. /// Creates a new suffixed floating-point literal.

View file

@ -8,6 +8,10 @@ pub fn test() {
fn test_display_literal() { fn test_display_literal() {
assert_eq!(Literal::isize_unsuffixed(-10).to_string(), "-10"); assert_eq!(Literal::isize_unsuffixed(-10).to_string(), "-10");
assert_eq!(Literal::isize_suffixed(-10).to_string(), "-10isize"); 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() { fn test_parse_literal() {