fix corner case in collapse_vars (#5261)

fixes #5260
This commit is contained in:
Alex Lam S.L
2022-01-03 20:18:41 +00:00
committed by GitHub
parent dec359ce58
commit c94624f36c
3 changed files with 75 additions and 1 deletions

View File

@@ -2051,7 +2051,7 @@ Compressor.prototype.compress = function(node) {
if (node instanceof AST_BlockScope
&& !(node instanceof AST_Scope)
&& !(node.variables && node.variables.all(function(def) {
return !lvalues.has(def.name);
return !enclosed.has(def.name) && !lvalues.has(def.name);
}))) {
var replace = can_replace;
can_replace = false;
@@ -2149,6 +2149,7 @@ Compressor.prototype.compress = function(node) {
var read_toplevel = false;
var modify_toplevel = false;
// Locate symbols which may execute code outside of scanning range
var enclosed = new Dictionary();
var well_defined = true;
var lvalues = get_lvalues(candidate);
var lhs_local = is_lhs_local(lhs);
@@ -3010,6 +3011,9 @@ Compressor.prototype.compress = function(node) {
break;
}
}
node.enclosed.forEach(function(def) {
if (def.scope !== node) enclosed.set(def.name, true);
});
return true;
} else if (find_arguments && node instanceof AST_Sub) {
scope.each_argname(function(argname) {