Skip to content

Commit

Permalink
enhance if_return (#3875)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexlamsl committed May 10, 2020
1 parent e23bf48 commit c76ee4b
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 2 deletions.
6 changes: 4 additions & 2 deletions lib/compress.js
Expand Up @@ -2027,8 +2027,10 @@ merge(Compressor.prototype, {

function handle_if_return(statements, compressor) {
var self = compressor.self();
var multiple_if_returns = has_multiple_if_returns(statements);
var parent = compressor.parent();
var in_lambda = self instanceof AST_Lambda;
var in_iife = in_lambda && parent && parent.TYPE == "Call";
var multiple_if_returns = has_multiple_if_returns(statements);
for (var i = statements.length; --i >= 0;) {
var stat = statements[i];
var j = next_index(i);
Expand Down Expand Up @@ -2156,7 +2158,7 @@ merge(Compressor.prototype, {
// the example code.
var prev = statements[prev_index(i)];
if (compressor.option("sequences") && in_lambda && !stat.alternative
&& prev instanceof AST_If && prev.body instanceof AST_Return
&& (!prev && in_iife || prev instanceof AST_If && prev.body instanceof AST_Return)
&& next_index(j) == statements.length && next instanceof AST_SimpleStatement) {
CHANGED = true;
stat = stat.clone();
Expand Down
21 changes: 21 additions & 0 deletions test/compress/if_return.js
Expand Up @@ -573,3 +573,24 @@ issue_3600: {
}
expect_stdout: "1"
}

iife_if_return_simple: {
options = {
conditionals: true,
if_return: true,
inline: true,
sequences: true,
side_effects: true,
}
input: {
(function() {
if (console)
return console.log("PASS");
console.log("FAIL");
})();
}
expect: {
console ? console.log("PASS") : console.log("FAIL");
}
expect_stdout: "PASS"
}

0 comments on commit c76ee4b

Please sign in to comment.