From df47632eccdc505810073d7bfced21bbf8c2dd98 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Mon, 24 May 2021 04:24:02 +0100 Subject: [PATCH] fix corner case in `ie8` (#4959) fixes #4958 --- lib/scope.js | 3 ++- test/compress/ie8.js | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/lib/scope.js b/lib/scope.js index 3ff0c631..466ab8d6 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -409,13 +409,14 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) { } else { new_def = scope.def_variable(node); } + if (new_def.undeclared) self.variables.set(name, new_def); + if (name == "arguments" && is_arguments(old_def) && node instanceof AST_SymbolLambda) return true; old_def.defun = new_def.scope; old_def.forEach(function(node) { node.redef = old_def; node.thedef = new_def; node.reference(options); }); - if (new_def.undeclared) self.variables.set(name, new_def); return true; } }); diff --git a/test/compress/ie8.js b/test/compress/ie8.js index 3221c92a..018cd2d8 100644 --- a/test/compress/ie8.js +++ b/test/compress/ie8.js @@ -2997,3 +2997,23 @@ issue_4928_2: { } expect_stdout: "PASS" } + +issue_4958: { + options = { + collapse_vars: true, + ie8: true, + } + input: { + console.log(function arguments(a) { + a = 21; + return arguments[0] + 21; + }("FAIL")); + } + expect: { + console.log(function arguments(a) { + a = 21; + return arguments[0] + 21; + }("FAIL")); + } + expect_stdout: "42" +}