aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2020-10-14 16:39:35 +0100
committerGitHub <noreply@github.com>2020-10-14 23:39:35 +0800
commit3d71e97dd100fe150db3a5585d744e109bfa53ac (patch)
tree32dcd852a9e9ef5f0e50252b1af10bb9eb1e29d0
parent7f35d9cee05528574a24cbdad5593403db07cbf0 (diff)
downloadtracifyjs-3d71e97dd100fe150db3a5585d744e109bfa53ac.tar.gz
tracifyjs-3d71e97dd100fe150db3a5585d744e109bfa53ac.zip
fix corner cases in `braces` & `sequences` (#4221)
fixes #4220
-rw-r--r--lib/compress.js2
-rw-r--r--lib/output.js4
-rw-r--r--test/compress/const.js48
3 files changed, 51 insertions, 3 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 3e6218a0..e66331d4 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -2513,7 +2513,7 @@ merge(Compressor.prototype, {
var line = block.body[i];
if (line instanceof AST_Var && declarations_only(line)) {
decls.push(line);
- } else if (stat) {
+ } else if (stat || line instanceof AST_Const) {
return false;
} else {
stat = line;
diff --git a/lib/output.js b/lib/output.js
index 7077d6dd..70bd74be 100644
--- a/lib/output.js
+++ b/lib/output.js
@@ -990,7 +990,7 @@ function OutputStream(options) {
/* -----[ if ]----- */
function make_then(self, output) {
var b = self.body;
- if (output.option("braces")
+ if (output.option("braces") && !(b instanceof AST_Const)
|| output.option("ie8") && b instanceof AST_Do)
return make_block(b, output);
// The squeezer replaces "block"-s that contain only a single
@@ -1381,7 +1381,7 @@ function OutputStream(options) {
});
function force_statement(stat, output) {
- if (output.option("braces")) {
+ if (output.option("braces") && !(stat instanceof AST_Const)) {
make_block(stat, output);
} else if (!stat || stat instanceof AST_EmptyStatement) {
output.force_semicolon();
diff --git a/test/compress/const.js b/test/compress/const.js
index 8c04c6b1..cd951fff 100644
--- a/test/compress/const.js
+++ b/test/compress/const.js
@@ -1056,3 +1056,51 @@ issue_4216: {
}
expect_stdout: true
}
+
+skip_braces: {
+ beautify = {
+ beautify: true,
+ braces: true,
+ }
+ input: {
+ if (console)
+ const a = 42;
+ else
+ const b = null;
+ console.log(typeof a, typeof b);
+ }
+ expect_exact: [
+ "if (console) const a = 42; else const b = null;",
+ "",
+ "console.log(typeof a, typeof b);",
+ ]
+ expect_stdout: true
+}
+
+issue_4220: {
+ options = {
+ collapse_vars: true,
+ conditionals: true,
+ sequences: true,
+ toplevel: true,
+ }
+ input: {
+ if (console) {
+ var o = console;
+ for (var k in o);
+ } else {
+ const a = 0;
+ }
+ console.log(typeof a);
+ }
+ expect: {
+ if (console) {
+ var o;
+ for (var k in console);
+ } else {
+ const a = 0;
+ }
+ console.log(typeof a);
+ }
+ expect_stdout: true
+}