diff options
-rw-r--r-- | lib/compress.js | 1 | ||||
-rw-r--r-- | test/compress/functions.js | 30 |
2 files changed, 31 insertions, 0 deletions
diff --git a/lib/compress.js b/lib/compress.js index e70af436..282ab780 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -4379,6 +4379,7 @@ merge(Compressor.prototype, { && !self.pure && !fn.contains_this() && can_inject_symbols()) { + fn._squeezed = true; return make_sequence(self, flatten_fn()).optimize(compressor); } if (compressor.option("side_effects") && all(fn.body, is_empty)) { diff --git a/test/compress/functions.js b/test/compress/functions.js index 87328820..a964f104 100644 --- a/test/compress/functions.js +++ b/test/compress/functions.js @@ -1989,3 +1989,33 @@ issue_2783: { } expect_stdout: "PASS" } + +issue_2898: { + options = { + collapse_vars: true, + inline: true, + reduce_vars: true, + sequences: true, + unused: true, + } + input: { + var c = 0; + (function() { + while (f()); + function f() { + var b = (c = 1 + c, void (c = 1 + c)); + b && b[0]; + } + })(); + console.log(c); + } + expect: { + var c = 0; + (function() { + while (b = void 0, void ((b = void (c = 1 + (c = 1 + c))) && b[0])); + var b; + })(), + console.log(c); + } + expect_stdout: "2" +} |