Skip to content

Commit

Permalink
fix corner case in conditionals (#4599)
Browse files Browse the repository at this point in the history
fixes #4598
  • Loading branch information
alexlamsl authored Jan 30, 2021
1 parent 35435d4 commit 0cd4a19
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 10 deletions.
16 changes: 6 additions & 10 deletions lib/compress.js
Original file line number Diff line number Diff line change
Expand Up @@ -4913,10 +4913,10 @@ merge(Compressor.prototype, {
return self;
});

function trim_block(node) {
function trim_block(node, in_list) {
switch (node.body.length) {
case 0:
return make_node(AST_EmptyStatement, node);
return in_list ? List.skip : make_node(AST_EmptyStatement, node);
case 1:
var stat = node.body[0];
if (!(stat instanceof AST_Const || stat instanceof AST_Let)) return stat;
Expand Down Expand Up @@ -5983,12 +5983,8 @@ merge(Compressor.prototype, {
return node;
}
}, function(node, in_list) {
if (node instanceof AST_BlockStatement) switch (node.body.length) {
case 0:
return in_list ? List.skip : make_node(AST_EmptyStatement, node);
case 1:
var stat = node.body[0];
if (!(stat instanceof AST_Const || stat instanceof AST_Let)) return stat;
if (node instanceof AST_BlockStatement) {
return trim_block(node, in_list);
} else if (node instanceof AST_For) {
// Certain combination of unused name + side effect leads to invalid AST:
// https://github.com/mishoo/UglifyJS/issues/44
Expand Down Expand Up @@ -7515,7 +7511,7 @@ merge(Compressor.prototype, {
var exprs = [];
for (var i = 0; i < stat.body.length; i++) {
var line = stat.body[i];
if (line instanceof AST_Defun) {
if (is_defun(line)) {
defuns.push(line);
} else if (line instanceof AST_EmptyStatement) {
continue;
Expand All @@ -7532,7 +7528,7 @@ merge(Compressor.prototype, {
}
return exprs;
}
if (stat instanceof AST_Defun) {
if (is_defun(stat)) {
defuns.push(stat);
return [];
}
Expand Down
17 changes: 17 additions & 0 deletions test/compress/awaits.js
Original file line number Diff line number Diff line change
Expand Up @@ -1047,3 +1047,20 @@ issue_4595: {
expect_stdout: "0"
node_version: ">=8"
}

issue_4598: {
options = {
conditionals: true,
}
input: {
if (console.log("PASS")) {
async function f() {}
}
}
expect: {
async function f() {}
console.log("PASS");
}
expect_stdout: "PASS"
node_version: ">=8"
}

0 comments on commit 0cd4a19

Please sign in to comment.