Skip to content

Commit bb2ce82

Browse files
committed
fix(es/minifier): Handle undefined args
Closes #11572
1 parent fc62617 commit bb2ce82

File tree

6 files changed

+21
-4
lines changed

6 files changed

+21
-4
lines changed

crates/swc_ecma_minifier/src/compress/pure/evaluate.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -586,8 +586,7 @@ impl Pure<'_> {
586586
}
587587

588588
if &*method.sym == "toPrecision" {
589-
// TODO: handle num.toPrecision(undefined)
590-
if args.is_empty() {
589+
if args.is_empty() || args[0].expr.is_undefined(self.expr_ctx) {
591590
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-number.prototype.toprecision
592591
// 2. If precision is undefined, return ! ToString(x).
593592
let value = num.value.to_js_string().into();
@@ -636,8 +635,7 @@ impl Pure<'_> {
636635
}
637636

638637
if &*method.sym == "toExponential" {
639-
// TODO: handle num.toExponential(undefined)
640-
if args.is_empty() {
638+
if args.is_empty() || args[0].expr.is_undefined(self.expr_ctx) {
641639
let value = f64_to_exponential(num.value).into();
642640

643641
self.changed = true;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"evaluate": true
3+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
console.log((1.23).toExponential());
2+
console.log((1.23).toPrecision());
3+
console.log((1.23).toExponential(undefined));
4+
console.log((1.23).toPrecision(undefined));
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
console.log("1.23e+0");
2+
console.log("1.23");
3+
console.log("1.23e+0");
4+
console.log("1.23");
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
console.log("1.23e+0");
2+
console.log("1.23");
3+
console.log("1.23e+0");
4+
console.log("1.23");
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
console.log("1.23e+0");
2+
console.log("1.23");
3+
console.log("1.23e+0");
4+
console.log("1.23");

0 commit comments

Comments
 (0)