From fc8314e810c91431cd18fa9a784adb7867726013 Mon Sep 17 00:00:00 2001 From: Mihai Bazon Date: Fri, 19 Oct 2012 12:57:29 +0300 Subject: [PATCH] minor fix for dropping unused definitions. function f(x, y) { var g = function() { return h() }; var h = function() { return g() }; return x + y; } now compresses to `function f(x, y) { return x + y }` --- lib/compress.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/compress.js b/lib/compress.js index cde4b6f7..3e5b524d 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -741,9 +741,10 @@ merge(Compressor.prototype, { }); def(AST_SimpleStatement, function(){ - if (this.body instanceof AST_Function) return false; return this.body.has_side_effects(); }); + def(AST_Defun, function(){ return true }); + def(AST_Function, function(){ return false }); def(AST_Binary, function(){ return this.left.has_side_effects() || this.right.has_side_effects(); @@ -1354,7 +1355,7 @@ merge(Compressor.prototype, { if (compressor.option("side_effects")) { if (self.expression instanceof AST_Function && self.args.length == 0 - && !self.expression.has_side_effects()) { + && !AST_Block.prototype.has_side_effects.call(self.expression)) { return make_node(AST_Undefined, self).transform(compressor); } } -- 2.34.1