diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2017-11-24 07:03:37 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-24 07:03:37 +0800 |
commit | aa9bdf416e5b288bbae8417780abf2f235bacfd4 (patch) | |
tree | de76dd2e041e46565990012c4204166bcd018cec /lib | |
parent | 8987780db66ad178f42bdd817f27853b55c37b27 (diff) | |
download | tracifyjs-aa9bdf416e5b288bbae8417780abf2f235bacfd4.tar.gz tracifyjs-aa9bdf416e5b288bbae8417780abf2f235bacfd4.zip |
make `AST_Lambda.contains_this()` less magical (#2505)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compress.js | 9 |
1 files 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) { |