diff options
author | kzc <zaxxon2011@gmail.com> | 2017-02-18 19:02:59 +0800 |
---|---|---|
committer | alexlamsl <alexlamsl@gmail.com> | 2017-02-21 13:29:57 +0800 |
commit | d11dca3cf9e34302ce12a6c9f1cd81b22551f2ba (patch) | |
tree | ff896e3240b131545837b90d73487c4ffb8945ca | |
parent | e5badb954157d41dba3cc74f8813a90a145d9ca3 (diff) | |
download | tracifyjs-d11dca3cf9e34302ce12a6c9f1cd81b22551f2ba.tar.gz tracifyjs-d11dca3cf9e34302ce12a6c9f1cd81b22551f2ba.zip |
fix stray else in compress with conditionals=false
closes #1449
-rw-r--r-- | lib/compress.js | 3 | ||||
-rw-r--r-- | test/compress/issue-1447.js | 45 |
2 files changed, 47 insertions, 1 deletions
diff --git a/lib/compress.js b/lib/compress.js index b49ebef2..459256f5 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1840,6 +1840,8 @@ merge(Compressor.prototype, { }); OPT(AST_If, function(self, compressor){ + if (is_empty(self.alternative)) self.alternative = null; + if (!compressor.option("conditionals")) return self; // if condition can be statically determined, warn and drop // one of the blocks. note, statically determined implies @@ -1868,7 +1870,6 @@ merge(Compressor.prototype, { } } } - if (is_empty(self.alternative)) self.alternative = null; var negated = self.condition.negate(compressor); var self_condition_length = self.condition.print_to_string().length; var negated_length = negated.print_to_string().length; diff --git a/test/compress/issue-1447.js b/test/compress/issue-1447.js new file mode 100644 index 00000000..163acbc2 --- /dev/null +++ b/test/compress/issue-1447.js @@ -0,0 +1,45 @@ +else_with_empty_block: { + options = {} + input: { + if (x) + yes(); + else { + } + } + expect_exact: "if(x)yes();" +} + +else_with_empty_statement: { + options = {} + input: { + if (x) + yes(); + else + ; + } + expect_exact: "if(x)yes();" +} + +conditional_false_stray_else_in_loop: { + options = { + evaluate : true, + comparisons : true, + booleans : true, + unused : true, + loops : true, + side_effects : true, + dead_code : true, + hoist_vars : true, + join_vars : true, + if_return : true, + cascade : true, + conditionals : false, + } + input: { + for (var i = 1; i <= 4; ++i) { + if (i <= 2) continue; + console.log(i); + } + } + expect_exact: "for(var i=1;i<=4;++i)if(!(i<=2))console.log(i);" +} |