@@ -644,7 +644,14 @@ merge(Compressor.prototype, {
|
|||||||
fixed = save;
|
fixed = save;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
visit(node, fixed);
|
visit(node, fixed, function() {
|
||||||
|
var save_len = tw.stack.length;
|
||||||
|
for (var i = 0, len = scanner.stack.length - 1; i < len; i++) {
|
||||||
|
tw.stack.push(scanner.stack[i]);
|
||||||
|
}
|
||||||
|
node.walk(tw);
|
||||||
|
tw.stack.length = save_len;
|
||||||
|
});
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
lhs.walk(scanner);
|
lhs.walk(scanner);
|
||||||
@@ -678,10 +685,10 @@ merge(Compressor.prototype, {
|
|||||||
node.right.walk(tw);
|
node.right.walk(tw);
|
||||||
scan_declaration(tw, left, function() {
|
scan_declaration(tw, left, function() {
|
||||||
return node.right;
|
return node.right;
|
||||||
}, function(sym, fixed) {
|
}, function(sym, fixed, walk) {
|
||||||
if (!(sym instanceof AST_SymbolRef)) {
|
if (!(sym instanceof AST_SymbolRef)) {
|
||||||
mark_assignment_to_arguments(sym);
|
mark_assignment_to_arguments(sym);
|
||||||
sym.walk(tw);
|
walk();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var d = sym.definition();
|
var d = sym.definition();
|
||||||
@@ -696,7 +703,7 @@ merge(Compressor.prototype, {
|
|||||||
sym.fixed = d.fixed = fixed;
|
sym.fixed = d.fixed = fixed;
|
||||||
sym.fixed.assigns = [ node ];
|
sym.fixed.assigns = [ node ];
|
||||||
} else {
|
} else {
|
||||||
sym.walk(tw);
|
walk();
|
||||||
d.fixed = false;
|
d.fixed = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1844,3 +1844,25 @@ issue_4372_2: {
|
|||||||
expect_stdout: "PASS"
|
expect_stdout: "PASS"
|
||||||
node_version: ">=6"
|
node_version: ">=6"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4383: {
|
||||||
|
options = {
|
||||||
|
evaluate: true,
|
||||||
|
reduce_vars: true,
|
||||||
|
unsafe: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
console.log(function(a) {
|
||||||
|
[ a[0] ] = [];
|
||||||
|
return a.length;
|
||||||
|
}([]));
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
console.log(function(a) {
|
||||||
|
[ a[0] ] = [];
|
||||||
|
return a.length;
|
||||||
|
}([]));
|
||||||
|
}
|
||||||
|
expect_stdout: "1"
|
||||||
|
node_version: ">=6"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user