@@ -10173,22 +10173,26 @@ merge(Compressor.prototype, {
|
||||
var argname = fn.argnames[index];
|
||||
if (def.deleted && def.deleted[index]) {
|
||||
argname = null;
|
||||
} else if (argname && !(argname instanceof AST_SymbolFunarg)) {
|
||||
argname = null;
|
||||
} else if (argname && (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;
|
||||
}))) {
|
||||
var arg_def = argname.definition();
|
||||
if (!compressor.option("reduce_vars")
|
||||
|| def.reassigned
|
||||
|| arg_def.assignments
|
||||
|| arg_def.orig.length > 1) {
|
||||
} else if (argname) {
|
||||
var arg_def;
|
||||
if (!(argname instanceof AST_SymbolFunarg)) {
|
||||
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) {
|
||||
argname = fn.make_var(AST_SymbolFunarg, fn, "argument_" + fn.argnames.length);
|
||||
fn.argnames.push(argname);
|
||||
|
||||
@@ -616,3 +616,25 @@ issue_4448: {
|
||||
expect_stdout: "PASS"
|
||||
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