@@ -10173,22 +10173,26 @@ merge(Compressor.prototype, {
|
|||||||
var argname = fn.argnames[index];
|
var argname = fn.argnames[index];
|
||||||
if (def.deleted && def.deleted[index]) {
|
if (def.deleted && def.deleted[index]) {
|
||||||
argname = null;
|
argname = null;
|
||||||
} else if (argname && !(argname instanceof AST_SymbolFunarg)) {
|
} else if (argname) {
|
||||||
argname = null;
|
var arg_def;
|
||||||
} else if (argname && (compressor.has_directive("use strict")
|
if (!(argname instanceof AST_SymbolFunarg)) {
|
||||||
|| fn.name
|
|
||||||
|| !(fn_parent instanceof AST_Call && index < fn_parent.args.length)
|
|
||||||
|| !all(fn.argnames, function(argname) {
|
|
||||||
return argname instanceof AST_SymbolFunarg;
|
|
||||||
}))) {
|
|
||||||
var arg_def = argname.definition();
|
|
||||||
if (!compressor.option("reduce_vars")
|
|
||||||
|| def.reassigned
|
|
||||||
|| arg_def.assignments
|
|
||||||
|| arg_def.orig.length > 1) {
|
|
||||||
argname = null;
|
argname = null;
|
||||||
|
} else if (expr.scope.find_variable(argname.name) !== (arg_def = argname.definition())) {
|
||||||
|
argname = null;
|
||||||
|
} else if (compressor.has_directive("use strict")
|
||||||
|
|| fn.name
|
||||||
|
|| !(fn_parent instanceof AST_Call && index < fn_parent.args.length)
|
||||||
|
|| !all(fn.argnames, function(argname) {
|
||||||
|
return argname instanceof AST_SymbolFunarg;
|
||||||
|
})) {
|
||||||
|
if (!compressor.option("reduce_vars")
|
||||||
|
|| def.reassigned
|
||||||
|
|| arg_def.assignments
|
||||||
|
|| arg_def.orig.length > 1) {
|
||||||
|
argname = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (!argname && index < fn.argnames.length + 5 && compressor.drop_fargs(fn, fn_parent)) {
|
} else if (index < fn.argnames.length + 5 && compressor.drop_fargs(fn, fn_parent)) {
|
||||||
while (index >= fn.argnames.length) {
|
while (index >= fn.argnames.length) {
|
||||||
argname = fn.make_var(AST_SymbolFunarg, fn, "argument_" + fn.argnames.length);
|
argname = fn.make_var(AST_SymbolFunarg, fn, "argument_" + fn.argnames.length);
|
||||||
fn.argnames.push(argname);
|
fn.argnames.push(argname);
|
||||||
|
|||||||
@@ -616,3 +616,25 @@ issue_4448: {
|
|||||||
expect_stdout: "PASS"
|
expect_stdout: "PASS"
|
||||||
node_version: ">=4"
|
node_version: ">=4"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4476: {
|
||||||
|
options = {
|
||||||
|
arguments: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
(function(a, b) {
|
||||||
|
(a => {
|
||||||
|
console.log(arguments[0], a);
|
||||||
|
})(b);
|
||||||
|
})("foo", "bar");
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
(function(a, b) {
|
||||||
|
(a => {
|
||||||
|
console.log(arguments[0], a);
|
||||||
|
})(b);
|
||||||
|
})("foo", "bar");
|
||||||
|
}
|
||||||
|
expect_stdout: "foo bar"
|
||||||
|
node_version: ">=4"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user