From b82feb9302adddb1763e9915b0daf9ff35ab2af2 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Fri, 5 Jan 2018 20:24:30 +0800 Subject: [PATCH] improve `if_return` (#2727) --- lib/compress.js | 5 +++-- test/compress/if_return.js | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/compress.js b/lib/compress.js index e824d6ff..7f33b53b 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1436,8 +1436,9 @@ merge(Compressor.prototype, { } //--- // if (foo()) return x; [ return ; ] ==> return foo() ? x : undefined; - if (multiple_if_returns && in_lambda && value && !stat.alternative - && (!next || next instanceof AST_Return)) { + if (value && !stat.alternative + && (!next && in_lambda && multiple_if_returns + || next instanceof AST_Return)) { CHANGED = true; stat = stat.clone(); stat.alternative = next || make_node(AST_Return, stat, { diff --git a/test/compress/if_return.js b/test/compress/if_return.js index a0dfdc9a..981b437f 100644 --- a/test/compress/if_return.js +++ b/test/compress/if_return.js @@ -372,3 +372,27 @@ if_var_return: { } } } + +if_if_return_return: { + options = { + conditionals: true, + if_return: true, + } + input: { + function f(a, b) { + if (a) { + if (b) + return b; + return; + } + g(); + } + } + expect: { + function f(a, b) { + if (a) + return b || void 0; + g(); + } + } +} -- 2.34.1