diff options
-rw-r--r-- | lib/compress.js | 2 | ||||
-rw-r--r-- | test/compress/hoist_props.js | 28 |
2 files changed, 29 insertions, 1 deletions
diff --git a/lib/compress.js b/lib/compress.js index 6e0d36a7..904295ee 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -4927,7 +4927,7 @@ merge(Compressor.prototype, { if (def.single_use) return; if (top_retain(def)) return; if (sym.fixed_value() !== right) return; - return right instanceof AST_Object; + return right instanceof AST_Object && right.properties.length > 0; } }); diff --git a/test/compress/hoist_props.js b/test/compress/hoist_props.js index 563c7aab..cc7ef020 100644 --- a/test/compress/hoist_props.js +++ b/test/compress/hoist_props.js @@ -912,3 +912,31 @@ issue_3440: { } expect_stdout: "PASS" } + +issue_3868: { + options = { + hoist_props: true, + passes: 2, + reduce_vars: true, + side_effects: true, + } + input: { + (function(t) { + t = {}; + ({ + get p() {}, + q: (console.log("PASS"), +t), + }).r; + })(); + } + expect: { + (function(t) { + t = {}; + ({ + get p() {}, + q: (console.log("PASS"), +t), + }).r; + })(); + } + expect_stdout: "PASS" +} |