suppress collapse_vars of this as call argument (#2204)

fixes #2203
This commit is contained in:
Alex Lam S.L
2017-07-06 01:03:52 +08:00
committed by GitHub
parent 1ac25fc032
commit 9306da3c58
2 changed files with 80 additions and 9 deletions

View File

@@ -823,16 +823,23 @@ merge(Compressor.prototype, {
fn.argnames.forEach(function(sym, i) {
var arg = iife.args[i];
if (!arg) arg = make_node(AST_Undefined, sym);
else arg.walk(new TreeWalker(function(node) {
if (!arg) return true;
if (node instanceof AST_SymbolRef && fn.variables.has(node.name)) {
var s = node.definition().scope;
if (s !== scope) while (s = s.parent_scope) {
if (s === scope) return true;
else {
var tw = new TreeWalker(function(node) {
if (!arg) return true;
if (node instanceof AST_SymbolRef && fn.variables.has(node.name)) {
var s = node.definition().scope;
if (s !== scope) while (s = s.parent_scope) {
if (s === scope) return true;
}
arg = null;
}
arg = null;
}
}));
if (node instanceof AST_This && !tw.find_parent(AST_Scope)) {
arg = null;
return true;
}
});
arg.walk(tw);
}
if (arg) candidates.push(make_node(AST_VarDef, sym, {
name: sym,
value: arg