Skip to content

Commit

Permalink
enhance conditionals (#3557)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexlamsl committed Oct 31, 2019
1 parent 1858c20 commit 3797458
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 8 deletions.
18 changes: 10 additions & 8 deletions lib/compress.js
Expand Up @@ -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, {
Expand Down Expand Up @@ -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
Expand Down
18 changes: 18 additions & 0 deletions test/compress/conditionals.js
Expand Up @@ -161,6 +161,24 @@ ifs_6: {
}
}

ifs_7: {
options = {
conditionals: true,
}
input: {
if (A); else;
if (A) while (B); else;
if (A); else while (C);
if (A) while (B); else while (C);
}
expect: {
A;
if (A) while (B);
if (!A) while (C);
if (A) while (B); else while (C);
}
}

cond_1: {
options = {
conditionals: true,
Expand Down

0 comments on commit 3797458

Please sign in to comment.