Nitin Kumar bc1b9537b0
Fix arrow transformation when arguments is defined as variable (#12344)
* fix: arrow-fn transformation when 'arguments' is defined as var

* fix: tests

* refactor: code

* Review by @nicolo-ribaudo

Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2021-07-06 13:59:24 -04:00

82 lines
1.2 KiB
JavaScript

function one() {
var inner = () => arguments;
return [].slice.call(inner());
}
one(1, 2);
function two() {
var inner = () => arguments;
var another = function () {
var inner2 = () => arguments;
};
return [].slice.call(inner());
}
two(1, 2);
function three() {
var fn = () => arguments[0] + "bar";
return fn();
}
three("foo");
function four() {
var fn = () => arguments[0].foo + "bar";
return fn();
}
four({ foo: "foo" });
function five(obj) {
var fn = () => obj.arguments[0].foo + "bar";
return fn();
}
five({ arguments: ["foo"] });
function six(obj) {
var fn = () => {
var fn2 = function () {
return arguments[0];
};
return fn2("foobar");
};
return fn();
}
six();
var seven = () => {
var arguments = 1;
return arguments;
};
seven();
var eight = () => {
var arguments = 1;
return () => arguments;
};
eight();
function nine() {
var arguments = 1;
var foo = () => {
return arguments;
};
}
nine();
var eleven = () => {
var arguments = 2;
return function () {
return () => arguments;
}
};
eleven()(1,2,3)();
var twelve = () => {
var arguments = 2;
return class {
m() { return () => arguments; }
}
};
twelve();