From aa9bdf416e5b288bbae8417780abf2f235bacfd4 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Fri, 24 Nov 2017 07:03:37 +0800 Subject: [PATCH] make `AST_Lambda.contains_this()` less magical (#2505) --- lib/compress.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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) { -- 2.34.1