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>
This commit is contained in:
Nitin Kumar
2021-07-06 23:29:24 +05:30
committed by GitHub
parent a5a63e3033
commit bc1b9537b0
7 changed files with 173 additions and 3 deletions

View File

@@ -0,0 +1,9 @@
function fn() {
var foo = () => {
return arguments;
};
}
var bar = () => arguments;
var baz = () => () => arguments;

View File

@@ -0,0 +1,19 @@
var _arguments2 = typeof arguments === "undefined" ? void 0 : arguments;
function fn() {
var _arguments = arguments;
var foo = function () {
return _arguments;
};
}
var bar = function () {
return _arguments2;
};
var baz = function () {
return function () {
return _arguments2;
};
};

View File

@@ -0,0 +1,10 @@
var arguments = 1;
function fn() {
var foo = () => {
return arguments;
};
}
var bar = () => arguments;
var baz = () => () => arguments;

View File

@@ -0,0 +1,19 @@
var _arguments2 = 1;
function fn() {
var _arguments = _arguments2;
var foo = function () {
return _arguments;
};
}
var bar = function () {
return _arguments2;
};
var baz = function () {
return function () {
return _arguments2;
};
};

View File

@@ -43,3 +43,39 @@ function six(obj) {
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();

View File

@@ -81,3 +81,56 @@ function six(obj) {
}
six();
var seven = function () {
var _arguments6 = 1;
return _arguments6;
};
seven();
var eight = function () {
var _arguments7 = 1;
return function () {
return _arguments7;
};
};
eight();
function nine() {
var _arguments8 = 1;
var foo = function () {
return _arguments8;
};
}
nine();
var eleven = function () {
var arguments = 2;
return function () {
var _arguments9 = arguments;
return function () {
return _arguments9;
};
};
};
eleven()(1, 2, 3)();
var twelve = function () {
var arguments = 2;
return class {
m() {
var _arguments10 = arguments;
return function () {
return _arguments10;
};
}
};
};
twelve();