AST_Node.DEFMETHOD("evaluate", function(compressor){
if (!compressor.option("evaluate")) return this;
var val = this._eval(compressor, 1);
- return !val || val instanceof RegExp || typeof val != "object" ? val : this;
+ if (!val || val instanceof RegExp) return val;
+ if (typeof val == "function" || typeof val == "object") return this;
+ return val;
});
var unaryPrefix = makePredicate("! ~ - + void");
AST_Node.DEFMETHOD("is_constant", function(){
def(AST_Constant, function(){
return this.getValue();
});
+ def(AST_Function, function(compressor) {
+ if (compressor.option("unsafe")) {
+ var node = this;
+ var fn = function() {};
+ fn.toString = function() {
+ return node.print_to_string();
+ };
+ return fn;
+ }
+ return this;
+ });
def(AST_Array, function(compressor, depth) {
if (compressor.option("unsafe")) {
var elements = [];
for (var i = 0, len = this.elements.length; i < len; i++) {
var element = this.elements[i];
- if (element instanceof AST_Function) {
- elements.push(element);
- continue;
- }
var value = element._eval(compressor, depth);
if (element === value) return this;
elements.push(value);