From: Mihai Bazon Date: Fri, 5 Oct 2012 13:51:16 +0000 (+0300) Subject: replace `(function(){ ...no side effects ... })()` with `undefined`. X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=a1e088593068a59ea7e620dc0cf412f1c01caa86;p=UglifyJS.git replace `(function(){ ...no side effects ... })()` with `undefined`. --- diff --git a/lib/compress.js b/lib/compress.js index fcf022e1..a4ac691a 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -673,16 +673,19 @@ merge(Compressor.prototype, { def(AST_EmptyStatement, function(){ return false }); def(AST_Constant, function(){ return false }); def(AST_This, function(){ return false }); - def(AST_Function, function(){ return false }); - def(AST_BlockStatement, function(){ + + function block(){ for (var i = this.body.length; --i >= 0;) { if (this.body[i].has_side_effects()) return true; } return false; - }); + }; + def(AST_Block, block); + def(AST_BlockStatement, block); def(AST_SimpleStatement, function(){ + if (this.body instanceof AST_Function) return false; return this.body.has_side_effects(); }); def(AST_Binary, function(){ @@ -1281,6 +1284,13 @@ merge(Compressor.prototype, { }); } } + if (compressor.option("side_effects")) { + if (self.expression instanceof AST_Function + && self.args.length == 0 + && !self.expression.has_side_effects()) { + return make_node(AST_Undefined, self); + } + } return self; });