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 }`
This commit is contained in:
Mihai Bazon
2012-10-19 12:57:29 +03:00
parent 6f45928a73
commit fc8314e810

View File

@@ -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);
}
}