negate_iife: do not add ! in front of arrow IIFE

This commit is contained in:
kzc 2017-06-29 20:37:19 -04:00
parent 2320d00ad3
commit 79a5683fff
2 changed files with 20 additions and 5 deletions

View File

@ -561,8 +561,8 @@ merge(Compressor.prototype, {
return orig.length == 1 && orig[0] instanceof AST_SymbolLambda; return orig.length == 1 && orig[0] instanceof AST_SymbolLambda;
}); });
function is_func_expr(node) { function is_func_expr(node, traditional) {
return node instanceof AST_Arrow || node instanceof AST_Function; return node instanceof AST_Function || !traditional && node instanceof AST_Arrow;
} }
function is_lhs_read_only(lhs) { function is_lhs_read_only(lhs) {
@ -706,9 +706,9 @@ merge(Compressor.prototype, {
return x; return x;
}; };
function is_iife_call(node) { function is_iife_call(node, traditional) {
if (node instanceof AST_Call && !(node instanceof AST_New)) { if (node instanceof AST_Call && !(node instanceof AST_New)) {
return is_func_expr(node.expression) || is_iife_call(node.expression); return is_func_expr(node.expression, traditional) || is_iife_call(node.expression);
} }
return false; return false;
} }
@ -3452,7 +3452,7 @@ merge(Compressor.prototype, {
} }
if (compressor.option("negate_iife") if (compressor.option("negate_iife")
&& compressor.parent() instanceof AST_SimpleStatement && compressor.parent() instanceof AST_SimpleStatement
&& is_iife_call(self)) { && is_iife_call(self, true)) {
return self.negate(compressor, true); return self.negate(compressor, true);
} }
var ev = self.evaluate(compressor); var ev = self.evaluate(compressor);

View File

@ -261,3 +261,18 @@ async_arrow_iife: {
} }
expect_exact: "(async()=>{await fetch({})})();" expect_exact: "(async()=>{await fetch({})})();"
} }
async_arrow_iife_negate_iife: {
options = {
negate_iife: true,
}
input: {
(async () => {
await fetch();
})();
(() => {
plain();
})();
}
expect_exact: "(async()=>{await fetch()})();(()=>{plain()})();"
}