From 83fb8b4ca1e877c9ca7b3b07712ddec1c6f3a43d Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Mon, 28 Oct 2019 23:54:27 +0800 Subject: [PATCH] fix corner case in `ie8` (#3543) fixes #3542 --- lib/compress.js | 2 +- test/compress/ie8.js | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/compress.js b/lib/compress.js index 7c5558bd01..1016133784 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -4238,7 +4238,7 @@ merge(Compressor.prototype, { def(AST_Binary, function(compressor, first_in_statement) { var right = this.right.drop_side_effect_free(compressor, first_in_statement); if (!right) return this.left.drop_side_effect_free(compressor, first_in_statement); - if (lazy_op[this.operator]) { + if (lazy_op[this.operator] && !(right instanceof AST_Function)) { var node = this; if (right !== node.right) { node = this.clone(); diff --git a/test/compress/ie8.js b/test/compress/ie8.js index 1a8402628d..f8ce35dc31 100644 --- a/test/compress/ie8.js +++ b/test/compress/ie8.js @@ -2339,3 +2339,25 @@ issue_3523_rename_ie8_toplevel: { } expect_stdout: "PASS" } + +issue_3542: { + options = { + ie8: true, + reduce_vars: true, + toplevel: true, + unused: true, + } + input: { + var a = 0; + var b = a++; + var c = b && function a() {} || b; + console.log(a); + } + expect: { + var a = 0; + a++; + (function a() {}); + console.log(a); + } + expect_stdout: "1" +}