diff --git a/lib/compress.js b/lib/compress.js index f6fe538d..bf6a40d4 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -688,7 +688,8 @@ merge(Compressor.prototype, { } // Stop immediately if these node types are encountered var parent = tt.parent(); - if (node instanceof AST_Debugger + if (node instanceof AST_Assign && node.operator != "=" && lhs.equivalent_to(node.left) + || node instanceof AST_Debugger || node instanceof AST_IterationStatement && !(node instanceof AST_For) || node instanceof AST_SymbolRef && node.undeclared() || node instanceof AST_Try diff --git a/test/compress/collapse_vars.js b/test/compress/collapse_vars.js index bbc9c65b..4215cebe 100644 --- a/test/compress/collapse_vars.js +++ b/test/compress/collapse_vars.js @@ -2167,3 +2167,22 @@ lvalues_def: { } expect_stdout: true } + +compound_assignment: { + options = { + collapse_vars: true, + } + input: { + var a; + a = 1; + a += a + 2; + console.log(a); + } + expect: { + var a; + a = 1; + a += a + 2; + console.log(a); + } + expect_stdout: "4" +}