From d38a5b69d5f3e076242c580efc463a00b2272969 Mon Sep 17 00:00:00 2001 From: Victorien Elvinger Date: Thu, 22 Dec 2022 00:34:52 +0100 Subject: [PATCH] fix(rome_js_analyze): `noPrecisionLoss` correctly handle 1 digit ints --- .../analyzers/nursery/no_precision_loss.rs | 19 ++++++++++++------- .../specs/nursery/noPrecisionLoss/valid.js | 1 + .../nursery/noPrecisionLoss/valid.js.snap | 2 ++ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/crates/rome_js_analyze/src/analyzers/nursery/no_precision_loss.rs b/crates/rome_js_analyze/src/analyzers/nursery/no_precision_loss.rs index eeaf89a133c..2663edb119a 100644 --- a/crates/rome_js_analyze/src/analyzers/nursery/no_precision_loss.rs +++ b/crates/rome_js_analyze/src/analyzers/nursery/no_precision_loss.rs @@ -194,13 +194,18 @@ impl NormalizedNumber<'_> { } fn to_scientific(&self) -> String { - format!( - "{}.{}{}e{}", - &self.digits[..1], - &self.digits[1..], - self.digits_rest, - self.exponent - 1 - ) + let fraction = &self.digits[1..]; + if fraction.is_empty() && self.digits_rest.is_empty() { + format!("{}e{}", &self.digits[..1], self.exponent - 1) + } else { + format!( + "{}.{}{}e{}", + &self.digits[..1], + fraction, + self.digits_rest, + self.exponent - 1 + ) + } } fn precision(&self) -> usize { diff --git a/crates/rome_js_analyze/tests/specs/nursery/noPrecisionLoss/valid.js b/crates/rome_js_analyze/tests/specs/nursery/noPrecisionLoss/valid.js index fda79271f56..f9a1a51fc82 100644 --- a/crates/rome_js_analyze/tests/specs/nursery/noPrecisionLoss/valid.js +++ b/crates/rome_js_analyze/tests/specs/nursery/noPrecisionLoss/valid.js @@ -1,3 +1,4 @@ +var x = 1 var x = 12345 var x = 123.456 var x = -123.456 diff --git a/crates/rome_js_analyze/tests/specs/nursery/noPrecisionLoss/valid.js.snap b/crates/rome_js_analyze/tests/specs/nursery/noPrecisionLoss/valid.js.snap index c56a69478db..bdf03328715 100644 --- a/crates/rome_js_analyze/tests/specs/nursery/noPrecisionLoss/valid.js.snap +++ b/crates/rome_js_analyze/tests/specs/nursery/noPrecisionLoss/valid.js.snap @@ -1,9 +1,11 @@ --- source: crates/rome_js_analyze/tests/spec_tests.rs +assertion_line: 92 expression: valid.js --- # Input ```js +var x = 1 var x = 12345 var x = 123.456 var x = -123.456