fix(minifier): do not change delete undefined to delete void 0 (#8527)

`delete undefined` returns `false`
`delete void 0` returns `true`
This commit is contained in:
Boshen 2025-01-16 03:08:26 +00:00
parent 92e44cba6b
commit 405b73d8e7

View file

@ -250,6 +250,12 @@ impl<'a, 'b> PeepholeSubstituteAlternateSyntax {
if !ctx.is_identifier_undefined(ident) {
return None;
}
// `delete undefined` returns `false`
// `delete void 0` returns `true`
if matches!(ctx.parent(), Ancestor::UnaryExpressionArgument(e) if e.operator().is_delete())
{
return None;
}
Some(ctx.ast.void_0(ident.span))
}
@ -1297,6 +1303,9 @@ mod test {
// destructuring throw error side effect
test_same("var {} = void 0");
test_same("var [] = void 0");
// `delete undefined` returns `false`
// `delete void 0` returns `true`
test_same("delete undefined");
}
#[test]