Skip to content

Commit 9422b1e

Browse files
committed
fix(minifier): do not change delete undefined to delete void 0
`delete undefined` returns `false` `delete void 0` returns `true`
1 parent 92e44cb commit 9422b1e

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

crates/oxc_minifier/src/ast_passes/peephole_substitute_alternate_syntax.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,12 @@ impl<'a, 'b> PeepholeSubstituteAlternateSyntax {
250250
if !ctx.is_identifier_undefined(ident) {
251251
return None;
252252
}
253+
// `delete undefined` returns `false`
254+
// `delete void 0` returns `true`
255+
if matches!(ctx.parent(), Ancestor::UnaryExpressionArgument(e) if e.operator().is_delete())
256+
{
257+
return None;
258+
}
253259
Some(ctx.ast.void_0(ident.span))
254260
}
255261

@@ -1297,6 +1303,9 @@ mod test {
12971303
// destructuring throw error side effect
12981304
test_same("var {} = void 0");
12991305
test_same("var [] = void 0");
1306+
// `delete undefined` returns `false`
1307+
// `delete void 0` returns `true`
1308+
test_same("delete undefined");
13001309
}
13011310

13021311
#[test]

0 commit comments

Comments
 (0)