fix corner case in awaits (#4988)

fixes #4987
This commit is contained in:
Alex Lam S.L
2021-05-30 06:40:13 +01:00
committed by GitHub
parent 23b9f36bd8
commit 55a230daa8
2 changed files with 38 additions and 4 deletions

View File

@@ -319,10 +319,12 @@ merge(Compressor.prototype, {
}),
});
}
if (node instanceof AST_Lambda && node !== self) {
return node;
}
if (node instanceof AST_Block) {
if (node instanceof AST_Lambda) {
if (node !== self) return node;
} else if (insert === "awaits" && node instanceof AST_Try) {
if (node.bfinally) return node;
}
var index = node.body.length - 1;
if (index >= 0) {
node.body[index] = node.body[index].transform(tt);
@@ -7587,7 +7589,7 @@ merge(Compressor.prototype, {
});
}
if (async && compressor.option("awaits")) {
if (drop_body) exp.process_expression(true, function(node) {
if (drop_body) exp.process_expression("awaits", function(node) {
var body = node.body;
if (body instanceof AST_Await) {
if (is_primitive(compressor, body.expression)) {

View File

@@ -1726,3 +1726,35 @@ issue_4975: {
expect_stdout: "object"
node_version: ">=8"
}
issue_4987: {
options = {
awaits: true,
side_effects: true,
}
input: {
(async function() {
try {
await 42;
} finally {
console.log("foo");
}
})();
console.log("bar");
}
expect: {
(async function() {
try {
await 0;
} finally {
console.log("foo");
}
})();
console.log("bar");
}
expect_stdout: [
"bar",
"foo",
]
node_version: ">=8"
}