@@ -9898,7 +9898,16 @@ merge(Compressor.prototype, {
|
|||||||
if (is_arrow(parent)) {
|
if (is_arrow(parent)) {
|
||||||
if (parent.value === node) return exp.optimize(compressor);
|
if (parent.value === node) return exp.optimize(compressor);
|
||||||
} else if (parent instanceof AST_Return) {
|
} else if (parent instanceof AST_Return) {
|
||||||
return exp.optimize(compressor);
|
var drop = true;
|
||||||
|
do {
|
||||||
|
node = parent;
|
||||||
|
parent = compressor.parent(level++);
|
||||||
|
if (parent instanceof AST_Try && parent.bfinally && parent.bfinally !== node) {
|
||||||
|
drop = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while (parent && !(parent instanceof AST_Scope));
|
||||||
|
if (drop) return exp.optimize(compressor);
|
||||||
} else if (parent instanceof AST_Sequence) {
|
} else if (parent instanceof AST_Sequence) {
|
||||||
if (parent.tail_node() === node) continue;
|
if (parent.tail_node() === node) continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1574,3 +1574,111 @@ issue_4764_3: {
|
|||||||
expect_stdout: "PASS"
|
expect_stdout: "PASS"
|
||||||
node_version: ">=8"
|
node_version: ">=8"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4972_1: {
|
||||||
|
options = {
|
||||||
|
awaits: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
console.log("foo");
|
||||||
|
(async function() {
|
||||||
|
try {
|
||||||
|
return await "bar";
|
||||||
|
} finally {
|
||||||
|
console.log("baz");
|
||||||
|
}
|
||||||
|
})().then(console.log);
|
||||||
|
console.log("moo");
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
console.log("foo");
|
||||||
|
(async function() {
|
||||||
|
try {
|
||||||
|
return await "bar";
|
||||||
|
} finally {
|
||||||
|
console.log("baz");
|
||||||
|
}
|
||||||
|
})().then(console.log);
|
||||||
|
console.log("moo");
|
||||||
|
}
|
||||||
|
expect_stdout: [
|
||||||
|
"foo",
|
||||||
|
"moo",
|
||||||
|
"baz",
|
||||||
|
"bar",
|
||||||
|
]
|
||||||
|
node_version: ">=8"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_4972_2: {
|
||||||
|
options = {
|
||||||
|
awaits: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
console.log("foo");
|
||||||
|
(async function() {
|
||||||
|
try {
|
||||||
|
console.log("bar");
|
||||||
|
} finally {
|
||||||
|
return await "baz";
|
||||||
|
}
|
||||||
|
})().then(console.log);
|
||||||
|
console.log("moo");
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
console.log("foo");
|
||||||
|
(async function() {
|
||||||
|
try {
|
||||||
|
console.log("bar");
|
||||||
|
} finally {
|
||||||
|
return "baz";
|
||||||
|
}
|
||||||
|
})().then(console.log);
|
||||||
|
console.log("moo");
|
||||||
|
}
|
||||||
|
expect_stdout: [
|
||||||
|
"foo",
|
||||||
|
"bar",
|
||||||
|
"moo",
|
||||||
|
"baz",
|
||||||
|
]
|
||||||
|
node_version: ">=8"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_4972_3: {
|
||||||
|
options = {
|
||||||
|
awaits: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
console.log("foo");
|
||||||
|
try {
|
||||||
|
(async function() {
|
||||||
|
return await "bar";
|
||||||
|
})().then(console.log);
|
||||||
|
} finally {
|
||||||
|
console.log("baz");
|
||||||
|
}
|
||||||
|
console.log("moo");
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
console.log("foo");
|
||||||
|
try {
|
||||||
|
(async function() {
|
||||||
|
return "bar";
|
||||||
|
})().then(console.log);
|
||||||
|
} finally {
|
||||||
|
console.log("baz");
|
||||||
|
}
|
||||||
|
console.log("moo");
|
||||||
|
}
|
||||||
|
expect_stdout: [
|
||||||
|
"foo",
|
||||||
|
"baz",
|
||||||
|
"moo",
|
||||||
|
"bar",
|
||||||
|
]
|
||||||
|
node_version: ">=8"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user