diff --git a/lib/scope.js b/lib/scope.js index e3e4248d..c2108c50 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -369,8 +369,9 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) { // pass 3: fix up any scoping issue with IE8 if (options.ie) self.walk(new TreeWalker(function(node) { if (node instanceof AST_SymbolCatch) { - var scope = node.thedef.defun; - if (scope.name instanceof AST_SymbolLambda && scope.name.name == node.name) { + var def = node.thedef; + var scope = def.defun; + if (def.name != "arguments" && scope.name instanceof AST_SymbolLambda && scope.name.name == def.name) { scope = scope.parent_scope.resolve(); } redefine(node, scope); diff --git a/test/compress/default-values.js b/test/compress/default-values.js index ac2be840..38f6552d 100644 --- a/test/compress/default-values.js +++ b/test/compress/default-values.js @@ -3044,3 +3044,28 @@ issue_5566_5: { expect_stdout: "foo bar" node_version: ">=6" } + +issue_5651: { + options = { + ie: true, + unused: true, + } + input: { + console.log(function arguments(a = "FAIL") { + try {} catch (arguments) { + var arguments; + } + return arguments[0]; + }()); + } + expect: { + console.log(function arguments(a = "FAIL") { + try {} catch (arguments) { + var arguments; + } + return arguments[0]; + }()); + } + expect_stdout: true + node_version: ">=6" +} diff --git a/test/compress/destructured.js b/test/compress/destructured.js index 284130d7..f79570f3 100644 --- a/test/compress/destructured.js +++ b/test/compress/destructured.js @@ -3844,3 +3844,28 @@ issue_5573: { ] node_version: ">=6" } + +issue_5651: { + options = { + ie: true, + unused: true, + } + input: { + console.log(function arguments({}) { + try {} catch (arguments) { + var arguments; + } + return arguments[0]; + }("PASS")); + } + expect: { + console.log(function arguments({}) { + try {} catch (arguments) { + var arguments; + } + return arguments[0]; + }("PASS")); + } + expect_stdout: true + node_version: ">=6" +}