From 75e9fd84174eaa8bf97975ad254fe06958564547 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Thu, 17 Dec 2020 05:51:34 +0000 Subject: [PATCH] fix corner case in `arguments` (#4387) fixes #4386 --- lib/compress.js | 2 ++ test/compress/destructured.js | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/lib/compress.js b/lib/compress.js index b767264c..a46cd42b 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -9843,6 +9843,8 @@ merge(Compressor.prototype, { var argname = fn.argnames[index]; if (def.deleted && def.deleted[index]) { argname = null; + } else if (argname instanceof AST_Destructured) { + argname = null; } else if (argname && (compressor.has_directive("use strict") || !(fn_parent instanceof AST_Call && index < fn_parent.args.length))) { var arg_def = argname.definition(); diff --git a/test/compress/destructured.js b/test/compress/destructured.js index 9fd425d1..81beb7f7 100644 --- a/test/compress/destructured.js +++ b/test/compress/destructured.js @@ -1866,3 +1866,23 @@ issue_4383: { expect_stdout: "1" node_version: ">=6" } + +issue_4386: { + options = { + arguments: true, + } + input: { + function f({}) { + return arguments[0]; + } + console.log(f("PASS")); + } + expect: { + function f({}) { + return arguments[0]; + } + console.log(f("PASS")); + } + expect_stdout: "PASS" + node_version: ">=6" +} -- 2.34.1