diff options
-rw-r--r-- | lib/compress.js | 8 | ||||
-rw-r--r-- | test/compress/properties.js | 23 |
2 files changed, 28 insertions, 3 deletions
diff --git a/lib/compress.js b/lib/compress.js index 666f4c4c..e8a71791 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -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) { diff --git a/test/compress/properties.js b/test/compress/properties.js index a70ab7d8..9270f438 100644 --- a/test/compress/properties.js +++ b/test/compress/properties.js @@ -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, |