This commit is contained in:
Mihai Bazon
2012-09-12 16:29:20 +03:00
parent a132841fb9
commit f5027ec1fc
2 changed files with 39 additions and 4 deletions

View File

@@ -833,17 +833,17 @@ function Compressor(options, false_by_default) {
&& index < block.length - 1) { && index < block.length - 1) {
if (compressor.parent() instanceof AST_Lambda) { if (compressor.parent() instanceof AST_Lambda) {
var rest = tighten_body(block.slice(index + 1), compressor); var rest = tighten_body(block.slice(index + 1), compressor);
var cond = negated_is_best ? negated : self.condition.negate(compressor); var cond = self.condition;
while (rest[0] instanceof AST_If && rest[0].body instanceof AST_Return && !rest[0].alternative) { while (rest[0] instanceof AST_If && rest[0].body instanceof AST_Return && !rest[0].alternative) {
cond = make_node(AST_Binary, rest[0], { cond = make_node(AST_Binary, rest[0], {
operator: "&&", operator: "||",
left: cond, left: cond,
right: rest[0].condition.negate(compressor) right: rest[0].condition
}); });
rest.shift(); rest.shift();
} }
return MAP.last(make_node(AST_If, self, { return MAP.last(make_node(AST_If, self, {
condition: cond, condition: cond.negate(compressor),
body: make_node(AST_BlockStatement, block[index + 1], { body: make_node(AST_BlockStatement, block[index + 1], {
body: rest body: rest
}).optimize(compressor) }).optimize(compressor)

View File

@@ -87,3 +87,38 @@ ifs_4: {
x(foo)[10].bar.baz = (foo && bar) ? something() : something_else(); x(foo)[10].bar.baz = (foo && bar) ? something() : something_else();
} }
} }
ifs_5: {
options = {
conditionals: true
};
input: {
function f() {
if (foo) return;
bar();
baz();
}
function g() {
if (foo) return;
if (bar) return;
if (baz) return;
if (baa) return;
a();
b()
}
}
expect: {
function f() {
if (!foo) {
bar();
baz();
}
}
function g() {
if (!(foo || bar || baz || baa)) {
a();
b()
}
}
}
}