@@ -595,7 +595,14 @@ merge(Compressor.prototype, {
|
|||||||
var expr = node.expression;
|
var expr = node.expression;
|
||||||
if (!(expr instanceof AST_SymbolRef)) return;
|
if (!(expr instanceof AST_SymbolRef)) return;
|
||||||
var def = expr.definition();
|
var def = expr.definition();
|
||||||
if (is_arguments(def) && node.property instanceof AST_Number) def.reassigned = true;
|
if (!is_arguments(def)) return;
|
||||||
|
var key = node.property;
|
||||||
|
if (key.is_constant()) key = key.value;
|
||||||
|
if (!(key instanceof AST_Node) && !/^[1-9]*[0-9]$/.test(key)) return;
|
||||||
|
def.reassigned = true;
|
||||||
|
(key instanceof AST_Node ? def.scope.argnames : [ def.scope.argnames[key] ]).forEach(function(argname) {
|
||||||
|
if (argname instanceof AST_SymbolFunarg) argname.definition().fixed = false;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function scan_declaration(tw, lhs, fixed, visit) {
|
function scan_declaration(tw, lhs, fixed, visit) {
|
||||||
|
|||||||
@@ -3094,3 +3094,26 @@ issue_4393: {
|
|||||||
}
|
}
|
||||||
expect_stdout: "PASS"
|
expect_stdout: "PASS"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4422: {
|
||||||
|
options = {
|
||||||
|
evaluate: true,
|
||||||
|
reduce_vars: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
console.log(function f(a) {
|
||||||
|
a = "FAIL 1";
|
||||||
|
arguments[0] = "PASS";
|
||||||
|
return a;
|
||||||
|
}("FAIL 2"));
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
console.log(function(a) {
|
||||||
|
a = "FAIL 1";
|
||||||
|
arguments[0] = "PASS";
|
||||||
|
return a;
|
||||||
|
}("FAIL 2"));
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user