diff options
-rw-r--r-- | lib/ast.js | 2 | ||||
-rw-r--r-- | lib/compress.js | 1 | ||||
-rw-r--r-- | test/compress/destructured.js | 22 |
3 files changed, 24 insertions, 1 deletions
@@ -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); diff --git a/lib/compress.js b/lib/compress.js index 8d41ab82..33d8cf55 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -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)) { diff --git a/test/compress/destructured.js b/test/compress/destructured.js index 1c448f2a..8e1cf68c 100644 --- a/test/compress/destructured.js +++ b/test/compress/destructured.js @@ -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" +} |