From f5952933a00bac8c9d794d5b0e3d5f8d6173c4a9 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Mon, 27 Mar 2017 02:32:46 +0800 Subject: preserve side effects in switch expression (#1694) fixes #1690 --- lib/compress.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/compress.js b/lib/compress.js index 8350ba25..9ed368c7 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -2560,10 +2560,9 @@ merge(Compressor.prototype, { fallthrough = !aborts(exact_match); } while (i < len) extract_declarations_from_unreachable_code(compressor, self.body[i++], decl); - if (body.length == 0) return make_node(AST_BlockStatement, self, { - body: decl - }).optimize(compressor); - body[0].body = decl.concat(body[0].body); + if (body.length > 0) { + body[0].body = decl.concat(body[0].body); + } self.body = body; } while (branch = self.body[self.body.length - 1]) { @@ -2575,9 +2574,11 @@ merge(Compressor.prototype, { && branch.expression.has_side_effects(compressor)) break; self.body.pop(); } - if (compressor.option("conditionals") && self.body.length == 0) { - return make_node(AST_SimpleStatement, self, { - body: self.expression + if (decl && self.body.length == 0) { + return make_node(AST_BlockStatement, self, { + body: decl.concat(make_node(AST_SimpleStatement, self.expression, { + body: self.expression + })) }).optimize(compressor); } if (body && body.length == 1 && (body[0] === exact_match || body[0] === default_branch)) { -- cgit v1.2.3