fix corner case in mangle (#4961)

fixes #4960
This commit is contained in:
Alex Lam S.L
2021-05-24 04:46:58 +01:00
committed by GitHub
parent df47632ecc
commit 1e787c556b
2 changed files with 32 additions and 3 deletions

View File

@@ -70,9 +70,7 @@ SymbolDef.prototype = {
} else if (!this.mangled_name && !this.unmangleable(options)) { } else if (!this.mangled_name && !this.unmangleable(options)) {
var def = this.redefined(); var def = this.redefined();
if (def) { if (def) {
var name = def.mangled_name || def.name; this.mangled_name = def.mangled_name || def.name;
this.mangled_name = name;
names_in_use(this.scope, options)[name] = true;
} else { } else {
this.mangled_name = next_mangled_name(this, options); this.mangled_name = next_mangled_name(this, options);
} }
@@ -683,6 +681,7 @@ AST_Toplevel.DEFMETHOD("mangle_names", function(options) {
redef = scope.def_variable(sym); redef = scope.def_variable(sym);
scope.to_mangle.push(redef); scope.to_mangle.push(redef);
} else if (redef.mangled_name) { } else if (redef.mangled_name) {
names_in_use(def.scope, options)[redef.mangled_name] = true;
return false; return false;
} }
redefined.push(def); redefined.push(def);

View File

@@ -1588,3 +1588,33 @@ issue_4954_2: {
expect_stdout: "PASS" expect_stdout: "PASS"
node_version: ">=4" node_version: ">=4"
} }
issue_4960: {
mangle = {}
input: {
"use strict";
var a;
(function() {
{
const a = console.log("PASS");
}
try {} catch (e) {
const a = console.log("FAIL");
}
})();
}
expect: {
"use strict";
var a;
(function() {
{
const o = console.log("PASS");
}
try {} catch (c) {
const o = console.log("FAIL");
}
})();
}
expect_stdout: "PASS"
node_version: ">=4"
}