From 946ad7690b9caa7ba1aeff5cb2d476a5cf04d23d Mon Sep 17 00:00:00 2001 From: Boshen <1430279+Boshen@users.noreply.github.com> Date: Thu, 16 Jan 2025 06:47:40 +0000 Subject: [PATCH] fix(minifier): `(-Infinity).toString()` -> `'-Infinity'` (#8535) --- .../peephole_replace_known_methods.rs | 20 ++----------------- crates/oxc_minifier/tests/ast_passes/mod.rs | 9 +++++++++ 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/crates/oxc_minifier/src/ast_passes/peephole_replace_known_methods.rs b/crates/oxc_minifier/src/ast_passes/peephole_replace_known_methods.rs index 93628ddbd..4f9a1c29e 100644 --- a/crates/oxc_minifier/src/ast_passes/peephole_replace_known_methods.rs +++ b/crates/oxc_minifier/src/ast_passes/peephole_replace_known_methods.rs @@ -294,19 +294,10 @@ impl<'a> PeepholeReplaceKnownMethods { if radix == 0 { return None; } - if lit.value.is_nan() { - return Some(ctx.ast.expression_string_literal(ce.span, "NaN", None)); - } - if lit.value.is_infinite() { - return Some(ctx.ast.expression_string_literal(ce.span, "Infinity", None)); - } if radix == 10 { use oxc_syntax::number::ToJsString; - return Some(ctx.ast.expression_string_literal( - ce.span, - lit.value.to_js_string(), - None, - )); + let s = lit.value.to_js_string(); + return Some(ctx.ast.expression_string_literal(ce.span, s, None)); } // Only convert integers for other radix values. let value = lit.value; @@ -1244,12 +1235,5 @@ mod test { test("123 .toString(b)", "123 .toString(b)"); test("1e99.toString(b)", "1e99.toString(b)"); test("/./.toString(b)", "/./.toString(b)"); - - // Will get constant folded into positive values - test_same("(-0).toString()"); - test_same("(-123).toString()"); - test_same("(-Infinity).toString()"); - test_same("(-1000000).toString(36)"); - test_same("(-0).toString(36)"); } } diff --git a/crates/oxc_minifier/tests/ast_passes/mod.rs b/crates/oxc_minifier/tests/ast_passes/mod.rs index ca203b085..c5927e905 100644 --- a/crates/oxc_minifier/tests/ast_passes/mod.rs +++ b/crates/oxc_minifier/tests/ast_passes/mod.rs @@ -77,6 +77,15 @@ fn integration() { ); } +#[test] +fn fold() { + test("var x = (-0).toString()", "var x = '0'"); + test("var x = (-0).toString(36)", "var x = '0'"); + test("var x = (-123).toString()", "var x = '-123'"); + test("var x = (-Infinity).toString()", "var x = '-Infinity'"); + test("var x = (-1000000).toString(36)", "var x = (-1e6).toString(36)"); +} + #[test] // https://github.com/oxc-project/oxc/issues/4341 fn tagged_template() { test_same("(1, o.f)()");