fix corner case in hoist_vars (#4739)

fixes #4736
This commit is contained in:
Alex Lam S.L
2021-03-05 20:25:32 +00:00
committed by GitHub
parent 2db1a141ab
commit fa09f87589
2 changed files with 41 additions and 12 deletions

View File

@@ -6821,18 +6821,14 @@ merge(Compressor.prototype, {
if (vars_found > 0) {
// collect only vars which don't show up in self's arguments list
var defs = [];
if (self instanceof AST_Lambda) self.each_argname(function(argname) {
vars.del(argname.name);
});
vars.each(function(def, name) {
if (self instanceof AST_Lambda
&& !all(self.argnames, function(argname) {
return argname.name != name;
})) {
vars.del(name);
} else {
def = def.clone();
def.value = null;
defs.push(def);
vars.set(name, def);
}
def = def.clone();
def.value = null;
defs.push(def);
vars.set(name, def);
});
if (defs.length > 0) {
// try to merge in assignments
@@ -6856,7 +6852,7 @@ merge(Compressor.prototype, {
&& vars.has(sym.name)) {
var def = vars.get(sym.name);
if (def.value) break;
def.value = expr.right;
def.value = expr.right.clone();
remove(defs, def);
defs.push(def);
body.shift();