mirror of
https://github.com/oxc-project/oxc.git
synced 2026-11-06 17:34:25 +00:00
fix(minifier): keep side effects when folding Number call (#24937)
Avoid compressing `Number([f(), 1])` to `NaN`.
This commit is contained in:
2 files changed
+8
-4
No files matched your search
@@ -1136,10 +1136,12 @@ impl<'a> PeepholeOptimizations {
|
||||
span,
|
||||
match arg {
|
||||
None => 0.0,
|
||||
Some(arg) => match arg.to_number(ctx) {
|
||||
Some(n) => n,
|
||||
None => return,
|
||||
},
|
||||
Some(arg) => {
|
||||
match arg.to_number(ctx).filter(|_| !arg.may_have_side_effects(ctx)) {
|
||||
Some(n) => n,
|
||||
None => return,
|
||||
}
|
||||
}
|
||||
},
|
||||
None,
|
||||
NumberBase::Decimal,
|
||||
|
||||
@@ -757,6 +757,8 @@ fn test_fold_number_constructor() {
|
||||
test("x = Number(true)", "x = 1");
|
||||
test("x = Number(false)", "x = 0");
|
||||
test("x = Number('foo')", "x = NaN");
|
||||
test_same("x = Number(void f())");
|
||||
test_same("x = Number([f(), 1])");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in new issue
Block a user