@@ -5918,7 +5918,7 @@ merge(Compressor.prototype, {
|
|||||||
self.body = body;
|
self.body = body;
|
||||||
if (compressor.option("conditionals")) switch (body.length) {
|
if (compressor.option("conditionals")) switch (body.length) {
|
||||||
case 1:
|
case 1:
|
||||||
if (!no_break(self)) break;
|
if (!no_break(body[0])) break;
|
||||||
var exp = body[0].expression;
|
var exp = body[0].expression;
|
||||||
var statements = body[0].body.slice();
|
var statements = body[0].body.slice();
|
||||||
if (body[0] !== default_branch && body[0] !== exact_match) return make_node(AST_If, self, {
|
if (body[0] !== default_branch && body[0] !== exact_match) return make_node(AST_If, self, {
|
||||||
@@ -5942,7 +5942,7 @@ merge(Compressor.prototype, {
|
|||||||
body: statements,
|
body: statements,
|
||||||
}).optimize(compressor);
|
}).optimize(compressor);
|
||||||
case 2:
|
case 2:
|
||||||
if (!member(default_branch, body)) break;
|
if (!member(default_branch, body) || !no_break(body[1])) break;
|
||||||
var statements = body[0].body.slice();
|
var statements = body[0].body.slice();
|
||||||
var exclusive = statements.length && is_break(statements[statements.length - 1], compressor);
|
var exclusive = statements.length && is_break(statements[statements.length - 1], compressor);
|
||||||
if (exclusive) statements.pop();
|
if (exclusive) statements.pop();
|
||||||
@@ -5982,6 +5982,7 @@ merge(Compressor.prototype, {
|
|||||||
|| node instanceof AST_SimpleStatement) return true;
|
|| node instanceof AST_SimpleStatement) return true;
|
||||||
if (is_break(node, tw)) found = true;
|
if (is_break(node, tw)) found = true;
|
||||||
});
|
});
|
||||||
|
tw.push(self);
|
||||||
node.walk(tw);
|
node.walk(tw);
|
||||||
return !found;
|
return !found;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1150,3 +1150,34 @@ drop_switch_8: {
|
|||||||
(C !== D ? y : z)();
|
(C !== D ? y : z)();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4059: {
|
||||||
|
options = {
|
||||||
|
conditionals: true,
|
||||||
|
dead_code: true,
|
||||||
|
evaluate: true,
|
||||||
|
switches: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
switch (0) {
|
||||||
|
default:
|
||||||
|
case 1:
|
||||||
|
break;
|
||||||
|
case a:
|
||||||
|
break;
|
||||||
|
var a;
|
||||||
|
}
|
||||||
|
console.log("PASS");
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
switch (0) {
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
case a:
|
||||||
|
break;
|
||||||
|
var a;
|
||||||
|
}
|
||||||
|
console.log("PASS");
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user