diff --git a/lib/compress.js b/lib/compress.js index 5aeb910e12..0433dd6ae9 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -11460,7 +11460,10 @@ merge(Compressor.prototype, { props = props.map(function(prop) { return prop.value; }); - if (prop instanceof AST_ObjectMethod && prop.value instanceof AST_Function) { + if (prop instanceof AST_ObjectMethod + && prop.value instanceof AST_Function + && !(compressor.parent() instanceof AST_Call)) { + if (prop.value.uses_arguments) break; props[i] = make_node(AST_Arrow, prop.value, prop.value); } return make_node(AST_Sub, this, { diff --git a/test/compress/classes.js b/test/compress/classes.js index b428e0e1f4..8e7b1dc928 100644 --- a/test/compress/classes.js +++ b/test/compress/classes.js @@ -1345,7 +1345,7 @@ issue_4821_2: { node_version: ">=12" } -issue_4829: { +issue_4829_1: { options = { properties: true, } @@ -1368,3 +1368,35 @@ issue_4829: { expect_stdout: "PASS" node_version: ">=4" } + +issue_4829_2: { + options = { + properties: true, + } + input: { + "use strict"; + try { + class A extends { + f() { + return arguments; + }, + }.f {} + } catch (e) { + console.log("PASS"); + } + } + expect: { + "use strict"; + try { + class A extends { + f() { + return arguments; + }, + }.f {} + } catch (e) { + console.log("PASS"); + } + } + expect_stdout: "PASS" + node_version: ">=4" +} diff --git a/test/compress/properties.js b/test/compress/properties.js index eb47624a2f..2fc2cea54d 100644 --- a/test/compress/properties.js +++ b/test/compress/properties.js @@ -1400,3 +1400,49 @@ object_super: { expect_stdout: "PASS" node_version: ">=4" } + +issue_4831_1: { + options = { + properties: true, + } + input: { + console.log({ + f() { + return arguments; + }, + }.f("PASS")[0]); + } + expect: { + console.log([ + function() { + return arguments; + }, + ][0]("PASS")[0]); + } + expect_stdout: "PASS" + node_version: ">=4" +} + +issue_4831_2: { + options = { + properties: true, + } + input: { + var f = { + f() { + return arguments; + }, + }.f; + console.log(f("PASS")[0]); + } + expect: { + var f = { + f() { + return arguments; + }, + }.f; + console.log(f("PASS")[0]); + } + expect_stdout: "PASS" + node_version: ">=4" +}