From d11dca3cf9e34302ce12a6c9f1cd81b22551f2ba Mon Sep 17 00:00:00 2001 From: kzc Date: Sat, 18 Feb 2017 19:02:59 +0800 Subject: [PATCH] fix stray else in compress with conditionals=false closes #1449 --- lib/compress.js | 3 ++- test/compress/issue-1447.js | 45 +++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 test/compress/issue-1447.js 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);" +} -- 2.34.1