fix corner case in reduce_vars

This commit is contained in:
alexlamsl 2021-02-10 07:43:25 +08:00
parent 228cdf8e7e
commit b2c99e71da
2 changed files with 67 additions and 1 deletions

View File

@ -9835,7 +9835,8 @@ merge(Compressor.prototype, {
}
} while (scope = scope.parent_scope);
}
} else if (fixed.name && fixed.name.name == "await" && is_async(fixed)) {
} else if (fixed.name && (fixed.name.name == "await" && is_async(fixed)
|| fixed.name.name == "yield" && is_generator(fixed))) {
single_use = false;
}
if (single_use) fixed.parent_scope = self.scope;

View File

@ -255,6 +255,71 @@ collapse_property_lambda: {
node_version: ">=4"
}
defun_name: {
input: {
function* yield() {
console.log("PASS");
}
yield().next();
}
expect: {
function* yield() {
console.log("PASS");
}
yield().next();
}
expect_stdout: "PASS"
node_version: ">=4"
}
drop_fname: {
rename = true
options = {
reduce_vars: true,
toplevel: true,
unused: true,
}
mangle = {
toplevel: true,
}
input: {
function* yield() {
console.log("PASS");
}
yield().next();
}
expect: {
(function*() {
console.log("PASS");
})().next();
}
expect_stdout: "PASS"
node_version: ">=4"
}
keep_fname: {
options = {
keep_fnames: true,
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
function* yield() {
console.log("PASS");
}
yield().next();
}
expect: {
function* yield() {
console.log("PASS");
}
yield().next();
}
expect_stdout: "PASS"
node_version: ">=4"
}
evaluate: {
options = {
evaluate: true,