arrows fix for object literal methods containing arguments (#2632)

fixes #2631
This commit is contained in:
kzc
2017-12-21 04:50:26 -05:00
committed by Alex Lam S.L
parent 85bfa17139
commit 8d156b51fe
2 changed files with 46 additions and 0 deletions

View File

@@ -5414,6 +5414,8 @@ merge(Compressor.prototype, {
// p(){return x;} ---> p:()=>x
if (compressor.option("arrows")
&& compressor.parent() instanceof AST_Object
&& !self.value.uses_arguments
&& !self.value.uses_eval
&& self.value.body.length == 1
&& self.value.body[0] instanceof AST_Return
&& self.value.body[0].value

View File

@@ -1153,3 +1153,47 @@ array_literal_with_spread_4: {
]
node_version: ">=6"
}
object_literal_method_using_arguments: {
options = {
arrows: true,
}
input: {
console.log(({
m() {
return arguments[0];
}
}).m("PASS"));
}
expect: {
console.log(({
m() {
return arguments[0];
}
}).m("PASS"));
}
expect_stdout: "PASS"
node_version: ">=6"
}
class_method_using_arguments: {
options = {
arrows: true,
}
input: {
console.log(new class {
m() {
return arguments[0];
}
}().m("PASS"));
}
expect: {
console.log(new class {
m() {
return arguments[0];
}
}().m("PASS"));
}
expect_stdout: "PASS"
node_version: ">=6"
}