|| !immutable
&& parent instanceof AST_Call
&& parent.expression === node
- && (!(value instanceof AST_Function) || value.contains_this(parent))) {
+ && (!(value instanceof AST_Function)
+ || !(parent instanceof AST_New) && value.contains_this())) {
return true;
} else if (parent instanceof AST_Array) {
return is_modified(parent, parent, level + 1);
return self;
});
- AST_Lambda.DEFMETHOD("contains_this", function(grandparent) {
- if (grandparent instanceof AST_New) return false;
+ AST_Lambda.DEFMETHOD("contains_this", function() {
var result;
var self = this;
self.walk(new TreeWalker(function(node) {
})) break;
var value = prop.value;
if (value instanceof AST_Function
- && value.contains_this(compressor.parent())) break;
+ && !(compressor.parent() instanceof AST_New)
+ && value.contains_this()) break;
return make_node(AST_Sub, this, {
expression: make_node(AST_Array, expr, {
elements: props.map(function(prop) {