diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2019-10-31 09:33:46 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-31 09:33:46 +0800 |
commit | 379745836510c23ac980a3c28f6754181aba12b9 (patch) | |
tree | 510cd3a7a0adece707358b851ebeaab885b4f63e /lib | |
parent | 1858c2018c0e872e17e31599bd6bed5063322f28 (diff) | |
download | tracifyjs-379745836510c23ac980a3c28f6754181aba12b9.tar.gz tracifyjs-379745836510c23ac980a3c28f6754181aba12b9.zip |
enhance `conditionals` (#3557)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compress.js | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/compress.js b/lib/compress.js index 9e2b6895..a6f5d20b 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -4665,11 +4665,6 @@ merge(Compressor.prototype, { self.body = self.alternative || make_node(AST_EmptyStatement, self); self.alternative = tmp; } - if (is_empty(self.body) && is_empty(self.alternative)) { - return make_node(AST_SimpleStatement, self.condition, { - body: self.condition.clone() - }).optimize(compressor); - } if (self.body instanceof AST_SimpleStatement && self.alternative instanceof AST_SimpleStatement) { return make_node(AST_SimpleStatement, self, { @@ -4703,15 +4698,22 @@ merge(Compressor.prototype, { }).transform(compressor) }).optimize(compressor); } - if (self.body instanceof AST_EmptyStatement - && self.alternative instanceof AST_SimpleStatement) { - return make_node(AST_SimpleStatement, self, { + if (is_empty(self.body)) { + if (is_empty(self.alternative)) return make_node(AST_SimpleStatement, self.condition, { + body: self.condition.clone() + }).optimize(compressor); + if (self.alternative instanceof AST_SimpleStatement) return make_node(AST_SimpleStatement, self, { body: make_node(AST_Binary, self, { operator : "||", left : self.condition, right : self.alternative.body }).transform(compressor) }).optimize(compressor); + self = make_node(AST_If, self, { + condition: negated, + body: self.alternative, + alternative: null + }); } if (self.body instanceof AST_Exit && self.alternative instanceof AST_Exit |