@@ -1466,12 +1466,13 @@ merge(Compressor.prototype, {
|
||||
function is_last_node(node, parent) {
|
||||
if (node.TYPE == "Binary") return node.operator == "in" && !is_object(node.right.tail_node());
|
||||
if (node instanceof AST_Call) {
|
||||
var fn = node.expression;
|
||||
var def, fn = node.expression;
|
||||
if (fn instanceof AST_SymbolRef) {
|
||||
if (recursive_ref(compressor, fn.definition())) return true;
|
||||
def = fn.definition();
|
||||
fn = fn.fixed_value();
|
||||
}
|
||||
if (!(fn instanceof AST_Lambda)) return true;
|
||||
if (def && recursive_ref(compressor, def)) return true;
|
||||
if (fn.collapse_scanning) return false;
|
||||
fn.collapse_scanning = true;
|
||||
var replace = can_replace;
|
||||
@@ -7572,13 +7573,10 @@ merge(Compressor.prototype, {
|
||||
});
|
||||
|
||||
function recursive_ref(compressor, def) {
|
||||
var node;
|
||||
for (var i = 0; node = compressor.parent(i); i++) {
|
||||
if (node instanceof AST_Lambda) {
|
||||
var name = node.name;
|
||||
if (name && name.definition() === def) break;
|
||||
}
|
||||
}
|
||||
var level = 0, node = compressor.self();
|
||||
do {
|
||||
if (node instanceof AST_Lambda && node.name && node.name.definition() === def) break;
|
||||
} while (node = compressor.parent(level++));
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user