From: Alex Lam S.L Date: Thu, 23 Nov 2017 23:03:37 +0000 (+0800) Subject: make `AST_Lambda.contains_this()` less magical (#2505) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=aa9bdf416e5b288bbae8417780abf2f235bacfd4;p=UglifyJS.git make `AST_Lambda.contains_this()` less magical (#2505) --- diff --git a/lib/compress.js b/lib/compress.js index 987ad01c..ce881c05 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -610,7 +610,8 @@ merge(Compressor.prototype, { || !immutable && parent instanceof AST_Call && parent.expression === node - && (!(value instanceof AST_Function) || value.contains_this(parent))) { + && (!(value instanceof AST_Function) + || !(parent instanceof AST_New) && value.contains_this())) { return true; } else if (parent instanceof AST_Array) { return is_modified(parent, parent, level + 1); @@ -4764,8 +4765,7 @@ merge(Compressor.prototype, { return self; }); - AST_Lambda.DEFMETHOD("contains_this", function(grandparent) { - if (grandparent instanceof AST_New) return false; + AST_Lambda.DEFMETHOD("contains_this", function() { var result; var self = this; self.walk(new TreeWalker(function(node) { @@ -4789,7 +4789,8 @@ merge(Compressor.prototype, { })) break; var value = prop.value; if (value instanceof AST_Function - && value.contains_this(compressor.parent())) break; + && !(compressor.parent() instanceof AST_New) + && value.contains_this()) break; return make_node(AST_Sub, this, { expression: make_node(AST_Array, expr, { elements: props.map(function(prop) {