diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2020-10-14 16:39:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-14 23:39:35 +0800 |
commit | 3d71e97dd100fe150db3a5585d744e109bfa53ac (patch) | |
tree | 32dcd852a9e9ef5f0e50252b1af10bb9eb1e29d0 | |
parent | 7f35d9cee05528574a24cbdad5593403db07cbf0 (diff) | |
download | tracifyjs-3d71e97dd100fe150db3a5585d744e109bfa53ac.tar.gz tracifyjs-3d71e97dd100fe150db3a5585d744e109bfa53ac.zip |
fix corner cases in `braces` & `sequences` (#4221)
fixes #4220
-rw-r--r-- | lib/compress.js | 2 | ||||
-rw-r--r-- | lib/output.js | 4 | ||||
-rw-r--r-- | test/compress/const.js | 48 |
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 +} |