parent
f5659f292b
commit
083679bcad
|
|
@ -1307,6 +1307,10 @@ merge(Compressor.prototype, {
|
||||||
return found;
|
return found;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function in_async_generator(scope) {
|
||||||
|
return scope instanceof AST_AsyncGeneratorDefun || scope instanceof AST_AsyncGeneratorFunction;
|
||||||
|
}
|
||||||
|
|
||||||
function find_scope(compressor) {
|
function find_scope(compressor) {
|
||||||
var level = 0, node;
|
var level = 0, node;
|
||||||
while (node = compressor.parent(level++)) {
|
while (node = compressor.parent(level++)) {
|
||||||
|
|
@ -2987,7 +2991,9 @@ merge(Compressor.prototype, {
|
||||||
var stat = statements[i];
|
var stat = statements[i];
|
||||||
if (prev) {
|
if (prev) {
|
||||||
if (stat instanceof AST_Exit) {
|
if (stat instanceof AST_Exit) {
|
||||||
stat.value = cons_seq(stat.value || make_node(AST_Undefined, stat)).transform(compressor);
|
if (stat.value || !in_async_generator(scope)) {
|
||||||
|
stat.value = cons_seq(stat.value || make_node(AST_Undefined, stat)).transform(compressor);
|
||||||
|
}
|
||||||
} else if (stat instanceof AST_For) {
|
} else if (stat instanceof AST_For) {
|
||||||
if (!(stat.init instanceof AST_Definitions)) {
|
if (!(stat.init instanceof AST_Definitions)) {
|
||||||
var abort = false;
|
var abort = false;
|
||||||
|
|
@ -11045,7 +11051,10 @@ merge(Compressor.prototype, {
|
||||||
});
|
});
|
||||||
|
|
||||||
OPT(AST_Return, function(self, compressor) {
|
OPT(AST_Return, function(self, compressor) {
|
||||||
if (self.value && is_undefined(self.value, compressor)) {
|
if (compressor.option("side_effects")
|
||||||
|
&& self.value
|
||||||
|
&& is_undefined(self.value, compressor)
|
||||||
|
&& !in_async_generator(compressor.find_parent(AST_Scope))) {
|
||||||
self.value = null;
|
self.value = null;
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
|
|
|
||||||
|
|
@ -5879,6 +5879,7 @@ collapse_rhs_this: {
|
||||||
collapse_rhs_undefined: {
|
collapse_rhs_undefined: {
|
||||||
options = {
|
options = {
|
||||||
collapse_vars: true,
|
collapse_vars: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
var a, b;
|
var a, b;
|
||||||
|
|
|
||||||
|
|
@ -2460,6 +2460,7 @@ delay_def: {
|
||||||
evaluate: true,
|
evaluate: true,
|
||||||
reduce_funcs: true,
|
reduce_funcs: true,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
|
|
|
||||||
|
|
@ -889,3 +889,64 @@ issue_4639_2: {
|
||||||
expect_stdout: "undefined"
|
expect_stdout: "undefined"
|
||||||
node_version: ">=4"
|
node_version: ">=4"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4641_1: {
|
||||||
|
options = {
|
||||||
|
sequences: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
console.log(typeof async function*() {
|
||||||
|
try {
|
||||||
|
console.log("foo");
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
console.log("bar");
|
||||||
|
}
|
||||||
|
}().next().then);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
console.log(typeof async function*() {
|
||||||
|
try {
|
||||||
|
console.log("foo");
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
console.log("bar");
|
||||||
|
}
|
||||||
|
}().next().then);
|
||||||
|
}
|
||||||
|
expect_stdout: [
|
||||||
|
"foo",
|
||||||
|
"bar",
|
||||||
|
"function",
|
||||||
|
]
|
||||||
|
node_version: ">=10"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_4641_2: {
|
||||||
|
options = {
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
console.log(typeof async function*() {
|
||||||
|
try {
|
||||||
|
return void "FAIL";
|
||||||
|
} finally {
|
||||||
|
console.log("PASS");
|
||||||
|
}
|
||||||
|
}().next().then);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
console.log(typeof async function*() {
|
||||||
|
try {
|
||||||
|
return void 0;
|
||||||
|
} finally {
|
||||||
|
console.log("PASS");
|
||||||
|
}
|
||||||
|
}().next().then);
|
||||||
|
}
|
||||||
|
expect_stdout: [
|
||||||
|
"function",
|
||||||
|
"PASS",
|
||||||
|
]
|
||||||
|
node_version: ">=10"
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user