From a1e088593068a59ea7e620dc0cf412f1c01caa86 Mon Sep 17 00:00:00 2001 From: Mihai Bazon Date: Fri, 5 Oct 2012 16:51:16 +0300 Subject: [PATCH] replace `(function(){ ...no side effects ... })()` with `undefined`. --- lib/compress.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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; }); -- 2.34.1