fix corner case in reuse of mangle options (#3062)

This commit is contained in:
Alex Lam S.L
2018-04-08 02:29:37 +08:00
committed by GitHub
parent 8d0b00317e
commit e5f6a88233

View File

@@ -344,7 +344,7 @@ function next_mangled_name(scope, options, def) {
} }
while (true) { while (true) {
name = base54(++scope.cname); name = base54(++scope.cname);
if (in_use[name] || !is_identifier(name) || options._reserved[name]) continue; if (in_use[name] || !is_identifier(name) || options.reserved.has[name]) continue;
if (!names[name]) break; if (!names[name]) break;
holes.push(scope.cname); holes.push(scope.cname);
} }
@@ -387,7 +387,7 @@ function _default_mangler_options(options) {
if (!Array.isArray(options.reserved)) options.reserved = []; if (!Array.isArray(options.reserved)) options.reserved = [];
// Never mangle arguments // Never mangle arguments
push_uniq(options.reserved, "arguments"); push_uniq(options.reserved, "arguments");
options._reserved = makePredicate(options.reserved); options.reserved.has = makePredicate(options.reserved);
return options; return options;
} }
@@ -453,7 +453,7 @@ AST_Toplevel.DEFMETHOD("mangle_names", function(options){
redefined.forEach(mangle); redefined.forEach(mangle);
function mangle(def) { function mangle(def) {
if (options._reserved[def.name]) return; if (options.reserved.has[def.name]) return;
def.mangle(options); def.mangle(options);
} }
}); });
@@ -504,7 +504,7 @@ AST_Toplevel.DEFMETHOD("expand_names", function(options) {
function rename(def) { function rename(def) {
if (def.global && options.cache) return; if (def.global && options.cache) return;
if (def.unmangleable(options)) return; if (def.unmangleable(options)) return;
if (options._reserved[def.name]) return; if (options.reserved.has[def.name]) return;
var d = def.redefined(); var d = def.redefined();
def.name = d ? d.name : next_name(); def.name = d ? d.name : next_name();
def.orig.forEach(function(sym) { def.orig.forEach(function(sym) {