fix return from recursive IIFE (#1570)

`side-effects` did not account for IIFEs being able to reference itself thus making its return value potentially significant
This commit is contained in:
Alex Lam S.L
2017-03-08 03:31:51 +08:00
committed by GitHub
parent 144052ca49
commit bd6dee52ab
2 changed files with 21 additions and 1 deletions

View File

@@ -2100,7 +2100,8 @@ merge(Compressor.prototype, {
def(AST_This, return_null);
def(AST_Call, function(compressor, first_in_statement){
if (!this.has_pure_annotation(compressor) && compressor.pure_funcs(this)) {
if (this.expression instanceof AST_Function) {
if (this.expression instanceof AST_Function
&& (!this.expression.name || !this.expression.name.definition().references.length)) {
var node = this.clone();
node.expression = node.expression.process_expression(false);
return node;