diff options
-rw-r--r-- | lib/compress.js | 11 | ||||
-rw-r--r-- | test/compress/conditionals.js | 17 |
2 files changed, 24 insertions, 4 deletions
diff --git a/lib/compress.js b/lib/compress.js index e318038a..423d049b 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -64,6 +64,7 @@ function Compressor(options, false_by_default) { if_return : !false_by_default, join_vars : !false_by_default, cascade : !false_by_default, + side_effects : !false_by_default, warnings : true, global_defs : {} @@ -998,9 +999,11 @@ merge(Compressor.prototype, { }); OPT(AST_SimpleStatement, function(self, compressor){ - if (!self.body.has_side_effects()) { - compressor.warn("Dropping side-effect-free statement [{file}:{line},{col}]", self.start); - return make_node(AST_EmptyStatement, self); + if (compressor.option("side_effects")) { + if (!self.body.has_side_effects()) { + compressor.warn("Dropping side-effect-free statement [{file}:{line},{col}]", self.start); + return make_node(AST_EmptyStatement, self); + } } return self; }); @@ -1153,7 +1156,7 @@ merge(Compressor.prototype, { operator: "&&", left: self.condition, right: self.body.condition - }); + }).transform(compressor); self.body = self.body.body; } if (aborts(self.body)) { diff --git a/test/compress/conditionals.js b/test/compress/conditionals.js index bc4624d1..dc2bb671 100644 --- a/test/compress/conditionals.js +++ b/test/compress/conditionals.js @@ -124,3 +124,20 @@ ifs_5: { } } } + +ifs_6: { + options = { + conditionals: true, + comparisons: true + }; + input: { + if (!foo && !bar && !baz && !boo) { + x = 10; + } else { + x = 20; + } + } + expect: { + x = foo || bar || baz || boo ? 20 : 10; + } +} |