aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2017-11-24 07:03:37 +0800
committerGitHub <noreply@github.com>2017-11-24 07:03:37 +0800
commitaa9bdf416e5b288bbae8417780abf2f235bacfd4 (patch)
treede76dd2e041e46565990012c4204166bcd018cec /lib
parent8987780db66ad178f42bdd817f27853b55c37b27 (diff)
downloadtracifyjs-aa9bdf416e5b288bbae8417780abf2f235bacfd4.tar.gz
tracifyjs-aa9bdf416e5b288bbae8417780abf2f235bacfd4.zip
make `AST_Lambda.contains_this()` less magical (#2505)
Diffstat (limited to 'lib')
-rw-r--r--lib/compress.js9
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) {