enhance `properties` (#3721)
authorAlex Lam S.L <alexlamsl@gmail.com>
Sat, 15 Feb 2020 13:04:44 +0000 (13:04 +0000)
committerGitHub <noreply@github.com>
Sat, 15 Feb 2020 13:04:44 +0000 (13:04 +0000)
lib/compress.js
test/compress/properties.js

index 666f4c4..e8a7179 100644 (file)
@@ -7615,9 +7615,11 @@ merge(Compressor.prototype, {
             value = value.fixed_value();
         }
         if (!value) return false;
-        return !(value instanceof AST_Lambda)
-            || compressor.parent() instanceof AST_New
-            || !value.contains_this();
+        if (!(value instanceof AST_Lambda)) return true;
+        var parent = compressor.parent();
+        if (parent.TYPE != "Call") return true;
+        if (parent.expression !== compressor.self()) return true;
+        return !value.contains_this();
     }
 
     OPT(AST_Sub, function(self, compressor) {
index a70ab7d..9270f43 100644 (file)
@@ -817,6 +817,29 @@ issue_2208_5: {
     expect_stdout: "42"
 }
 
+issue_2208_6: {
+    options = {
+        inline: true,
+        properties: true,
+        side_effects: true,
+    }
+    input: {
+        a = 42;
+        console.log(("FAIL", {
+            p: function() {
+                return this.a;
+            }
+        }.p)());
+    }
+    expect: {
+        a = 42;
+        console.log(function() {
+            return this.a;
+        }());
+    }
+    expect_stdout: "42"
+}
+
 issue_2256: {
     options = {
         side_effects: true,