Skip to content

Commit 7edd10e

Browse files
authored
fix corner case in unused (#5708)
fixes #5707
1 parent bccb1c3 commit 7edd10e

File tree

3 files changed

+29
-3
lines changed

3 files changed

+29
-3
lines changed

lib/compress.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7251,16 +7251,19 @@ Compressor.prototype.compress = function(node) {
72517251
node.name = null;
72527252
}
72537253
if (node instanceof AST_Lambda) {
7254-
descend_scope();
72557254
if (drop_funcs && node !== self && node instanceof AST_LambdaDefinition) {
72567255
var def = node.name.definition();
72577256
if (!(def.id in in_use_ids)) {
72587257
log(node.name, "Dropping unused function {name}");
72597258
def.eliminated++;
7260-
if (parent instanceof AST_ExportDefault) return to_func_expr(node, true);
7259+
if (parent instanceof AST_ExportDefault) {
7260+
descend_scope();
7261+
return to_func_expr(node, true);
7262+
}
72617263
return in_list ? List.skip : make_node(AST_EmptyStatement, node);
72627264
}
72637265
}
7266+
descend_scope();
72647267
if (node instanceof AST_LambdaExpression && node.name && drop_fn_name(node.name.definition())) {
72657268
node.name = null;
72667269
}

test/compress/side_effects.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,9 @@ issue_4668: {
584584
}
585585
expect: {
586586
console.log(function f() {
587-
(function g() {})();
587+
(function g() {
588+
0;
589+
})();
588590
}());
589591
}
590592
expect_stdout: "undefined"

test/compress/yields.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2018,3 +2018,24 @@ issue_5684: {
20182018
expect_stdout: "PASS"
20192019
node_version: ">=10"
20202020
}
2021+
2022+
issue_5707: {
2023+
options = {
2024+
hoist_props: true,
2025+
reduce_vars: true,
2026+
side_effects: true,
2027+
toplevel: true,
2028+
unused: true,
2029+
yields: true,
2030+
}
2031+
input: {
2032+
var a, b;
2033+
function* f(c = (b = 42, console.log("PASS"))) {}
2034+
b = f();
2035+
}
2036+
expect: {
2037+
console.log("PASS");
2038+
}
2039+
expect_stdout: "PASS"
2040+
node_version: ">=6"
2041+
}

0 commit comments

Comments
 (0)