@@ -535,6 +535,7 @@ merge(Compressor.prototype, {
|
||||
|
||||
function handle_if_return(statements, compressor) {
|
||||
var self = compressor.self();
|
||||
var multiple_if_returns = has_multiple_if_returns(statements);
|
||||
var in_lambda = self instanceof AST_Lambda;
|
||||
var ret = [];
|
||||
loop: for (var i = statements.length; --i >= 0;) {
|
||||
@@ -572,7 +573,8 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
//---
|
||||
// if (foo()) return x; [ return ; ] ==> return foo() ? x : undefined;
|
||||
if ((ret.length == 0 || ret[0] instanceof AST_Return) && stat.body.value && !stat.alternative && in_lambda) {
|
||||
if (multiple_if_returns && (ret.length == 0 || ret[0] instanceof AST_Return)
|
||||
&& stat.body.value && !stat.alternative && in_lambda) {
|
||||
CHANGED = true;
|
||||
stat = stat.clone();
|
||||
stat.alternative = ret[0] || make_node(AST_Return, stat, {
|
||||
@@ -664,6 +666,17 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
||||
function has_multiple_if_returns(statements) {
|
||||
var n = 0;
|
||||
for (var i = statements.length; --i >= 0;) {
|
||||
var stat = statements[i];
|
||||
if (stat instanceof AST_If && stat.body instanceof AST_Return) {
|
||||
if (++n > 1) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
function eliminate_dead_code(statements, compressor) {
|
||||
|
||||
Reference in New Issue
Block a user