From fef0bf9ee0367f07dfbca26b144c2995c2b5db5f Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Wed, 29 Mar 2017 04:40:05 +0800 Subject: [PATCH] improve beautified output of switch blocks (#1721) --- lib/output.js | 24 ++++++++++++------------ test/compress/switch.js | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 12 deletions(-) diff --git a/lib/output.js b/lib/output.js index c0f105235e2..5c11088b599 100644 --- a/lib/output.js +++ b/lib/output.js @@ -960,24 +960,24 @@ function OutputStream(options) { self.expression.print(output); }); output.space(); - if (self.body.length > 0) output.with_block(function(){ - self.body.forEach(function(stmt, i){ - if (i) output.newline(); + var last = self.body.length - 1; + if (last < 0) output.print("{}"); + else output.with_block(function(){ + self.body.forEach(function(branch, i){ output.indent(true); - stmt.print(output); + branch.print(output); + if (i < last && branch.body.length > 0) + output.newline(); }); }); - else output.print("{}"); }); AST_SwitchBranch.DEFMETHOD("_do_print_body", function(output){ - if (this.body.length > 0) { + output.newline(); + this.body.forEach(function(stmt){ + output.indent(); + stmt.print(output); output.newline(); - this.body.forEach(function(stmt){ - output.indent(); - stmt.print(output); - output.newline(); - }); - } + }); }); DEFPRINT(AST_Default, function(self, output){ output.print("default:"); diff --git a/test/compress/switch.js b/test/compress/switch.js index 5c12449cca9..82d725f2949 100644 --- a/test/compress/switch.js +++ b/test/compress/switch.js @@ -680,3 +680,44 @@ issue_1705_3: { } expect_stdout: true } + +beautify: { + beautify = { + beautify: true, + } + input: { + switch (a) { + case 0: + case 1: + break; + case 2: + default: + } + switch (b) { + case 3: + foo(); + bar(); + default: + break; + } + } + expect_exact: [ + "switch (a) {", + " case 0:", + " case 1:", + " break;", + "", + " case 2:", + " default:", + "}", + "", + "switch (b) {", + " case 3:", + " foo();", + " bar();", + "", + " default:", + " break;", + "}", + ] +}