fix corner case in arguments (#4400)

fixes #4399
This commit is contained in:
Alex Lam S.L
2020-12-18 02:12:01 +00:00
committed by GitHub
parent 82d2aa4acf
commit 1b646d3bc4
3 changed files with 24 additions and 1 deletions

View File

@@ -1314,7 +1314,7 @@ var AST_Label = DEFNODE("Label", "references", {
}
}, AST_Symbol);
var AST_SymbolRef = DEFNODE("SymbolRef", "fixed", {
var AST_SymbolRef = DEFNODE("SymbolRef", "fixed in_arg", {
$documentation: "Reference to some symbol (not definition/declaration)",
}, AST_Symbol);

View File

@@ -9881,6 +9881,7 @@ merge(Compressor.prototype, {
if (compressor.option("arguments")
&& expr instanceof AST_SymbolRef
&& is_arguments(def = expr.definition())
&& !expr.in_arg
&& prop instanceof AST_Number
&& (fn = def.scope) === find_lambda()
&& fn.uses_arguments < (assigned ? 2 : 3)) {

View File

@@ -1906,3 +1906,25 @@ issue_4395: {
expect_stdout: "PASS"
node_version: ">=6"
}
issue_4399: {
options = {
arguments: true,
}
input: {
console.log(function({
[arguments[1]]: a,
}, b) {
return a;
}([ "PASS" ], 0));
}
expect: {
console.log(function({
[arguments[1]]: a,
}, b) {
return a;
}([ "PASS" ], 0));
}
expect_stdout: "PASS"
node_version: ">=6"
}