From 7e13c0db4034d2c28e36473a3add915de1813844 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Sat, 3 Feb 2018 07:58:43 +0800 Subject: [PATCH] handle `break` & `continue` in `collapse_vars` (#2875) fixes #2873 --- lib/compress.js | 1 + test/compress/collapse_vars.js | 50 ++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/lib/compress.js b/lib/compress.js index 6f9d64f9..993092a0 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -968,6 +968,7 @@ merge(Compressor.prototype, { || node instanceof AST_Call && lhs instanceof AST_PropAccess && lhs.equivalent_to(node.expression) || node instanceof AST_Debugger || node instanceof AST_IterationStatement && !(node instanceof AST_For) + || node instanceof AST_LoopControl || node instanceof AST_Try || node instanceof AST_With || parent instanceof AST_For && node !== parent.init diff --git a/test/compress/collapse_vars.js b/test/compress/collapse_vars.js index a2571c24..ad09edc3 100644 --- a/test/compress/collapse_vars.js +++ b/test/compress/collapse_vars.js @@ -4383,3 +4383,53 @@ cond_branch_switch: { } expect_stdout: "1" } + +issue_2873_1: { + options = { + collapse_vars: true, + } + input: { + var b = 1, c = 0; + do { + c++; + if (!--b) break; + c = 1 + c; + } while (0); + console.log(b, c); + } + expect: { + var b = 1, c = 0; + do { + c++; + if (!--b) break; + c = 1 + c; + } while (0); + console.log(b, c); + } + expect_stdout: "0 1" +} + +issue_2873_2: { + options = { + collapse_vars: true, + } + input: { + var b = 1, c = 0; + do { + c++; + if (!--b) continue; + c = 1 + c; + } while (0); + console.log(b, c); + } + expect: { + var b = 1, c = 0; + do { + c++; + if (!--b) continue; + c = 1 + c; + } while (0); + console.log(b, c); + } + expect_stdout: "0 1" +} -- 2.34.1