fix corner case in ie8

fixes #4015
This commit is contained in:
alexlamsl 2020-07-20 22:23:59 +08:00
parent 484d3fd8c7
commit 33ded3b355
2 changed files with 44 additions and 2 deletions

View File

@ -230,6 +230,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) {
} else {
new_def = scope.def_variable(node);
}
old_def.defun = new_def.scope;
old_def.orig.concat(old_def.references).forEach(function(node) {
node.thedef = new_def;
node.reference(options);

View File

@ -2544,12 +2544,12 @@ issue_3999: {
expect: {
(function() {
(function f() {
for (var c = 0; c < 2; c++)
for (var o = 0; o < 2; o++)
try {
f[0];
} catch (f) {
var f = 0;
console.log(c);
console.log(o);
}
})();
})(typeof f);
@ -2593,3 +2593,44 @@ issue_4001: {
}
expect_stdout: "undefined"
}
issue_4015: {
rename = true
mangle = {
ie8: true,
toplevel: true,
}
input: {
var n, a = 0, b;
function f() {
try {
throw 0;
} catch (b) {
(function g() {
(function b() {
a++;
})();
})();
}
}
f();
console.log(a);
}
expect: {
var n, o = 0, c;
function t() {
try {
throw 0;
} catch (c) {
(function n() {
(function c() {
o++;
})();
})();
}
}
t();
console.log(o);
}
expect_stdout: "1"
}