From: Alex Lam S.L Date: Sat, 3 Feb 2018 19:58:49 +0000 (+0800) Subject: maintain order between side-effects and externally observable assignments (#2879) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=78a44d5ab0fd2195c8f22cc8a39193b33dad6188;p=UglifyJS.git maintain order between side-effects and externally observable assignments (#2879) fixes #2878 --- diff --git a/lib/compress.js b/lib/compress.js index 993092a0..f9cd7a41 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1040,7 +1040,6 @@ merge(Compressor.prototype, { || node instanceof AST_PropAccess && (side_effects || node.expression.may_throw_on_access(compressor)) || node instanceof AST_SymbolRef - && !(parent instanceof AST_Assign && parent.operator == "=" && parent.left === node) && (lvalues[node.name] || side_effects && may_modify(node)) || node instanceof AST_VarDef && node.value && (node.name.name in lvalues || side_effects && may_modify(node.name)) diff --git a/test/compress/collapse_vars.js b/test/compress/collapse_vars.js index ad09edc3..4191de85 100644 --- a/test/compress/collapse_vars.js +++ b/test/compress/collapse_vars.js @@ -4433,3 +4433,37 @@ issue_2873_2: { } expect_stdout: "0 1" } + +issue_2878: { + options = { + collapse_vars: true, + sequences: true, + } + input: { + var c = 0; + (function (a, b) { + function f2() { + if (a) c++; + } + b = f2(); + a = 1; + b && b.b; + f2(); + })(); + console.log(c); + } + expect: { + var c = 0; + (function (a, b) { + function f2() { + if (a) c++; + } + b = f2(), + a = 1, + b && b.b, + f2(); + })(), + console.log(c); + } + expect_stdout: "1" +}