Skip to content

Commit

Permalink
Review by @nicolo-ribaudo
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolo-ribaudo committed May 9, 2021
1 parent 246e2d6 commit 2cbb3ec
Show file tree
Hide file tree
Showing 8 changed files with 109 additions and 46 deletions.
@@ -1,7 +1,9 @@
function wrapper(fn) {
return function () {
var _arguments = arguments;

var _loop = function () {
var val = fn(...arguments);
var val = fn(..._arguments);
return {
v: val.test(function () {
console.log(val);
Expand Down
@@ -0,0 +1,9 @@
function fn() {
var foo = () => {
return arguments;
};
}

var bar = () => arguments;

var baz = () => () => arguments;
@@ -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;
};
};
@@ -0,0 +1,10 @@
var arguments = 1;
function fn() {
var foo = () => {
return arguments;
};
}

var bar = () => arguments;

var baz = () => () => arguments;
@@ -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;
};
};
Expand Up @@ -64,14 +64,6 @@ function nine() {
}
nine();

var arguments = 1;
function ten() {
var foo = () => {
return arguments;
};
}
ten();

var eleven = () => {
var arguments = 2;
return function () {
Expand Down
@@ -1,10 +1,8 @@
var _arguments4 = arguments;

function one() {
var _arguments2 = arguments;
var _arguments = arguments;

var inner = function () {
return _arguments2;
return _arguments;
};

return [].slice.call(inner());
Expand All @@ -13,13 +11,17 @@ function one() {
one(1, 2);

function two() {
var _arguments2 = arguments;

var inner = function () {
return _arguments;
return _arguments2;
};

var another = function () {
var _arguments3 = arguments;

var inner2 = function () {
return _arguments;
return _arguments3;
};
};

Expand All @@ -29,8 +31,10 @@ function two() {
two(1, 2);

function three() {
var _arguments4 = arguments;

var fn = function () {
return _arguments[0] + "bar";
return _arguments4[0] + "bar";
};

return fn();
Expand All @@ -39,8 +43,10 @@ function three() {
three("foo");

function four() {
var _arguments5 = arguments;

var fn = function () {
return _arguments[0].foo + "bar";
return _arguments5[0].foo + "bar";
};

return fn();
Expand All @@ -65,7 +71,7 @@ five({
function six(obj) {
var fn = function () {
var fn2 = function () {
return _arguments[0];
return arguments[0];
};

return fn2("foobar");
Expand All @@ -77,55 +83,45 @@ function six(obj) {
six();

var seven = function () {
var arguments = 1;
return arguments;
var _arguments6 = 1;
return _arguments6;
};

seven();

var eight = function () {
var _arguments3 = 1;
var _arguments7 = 1;
return function () {
return _arguments4;
return _arguments7;
};
};

eight();

function nine() {
var _arguments6 = arguments;
var _arguments5 = 1;
var _arguments8 = 1;

var foo = function () {
return _arguments6;
return _arguments8;
};
}

nine();
var _arguments = 1;

function ten() {
var foo = function () {
return _arguments;
};
}

ten();

var eleven = function () {
var _arguments7 = 2;
var arguments = 2;
return function () {
var _arguments8 = arguments;
var _arguments9 = arguments;
return function () {
return _arguments8;
return _arguments9;
};
};
};

eleven()(1, 2, 3)();

var twelve = function () {
var _arguments9 = 2;
var arguments = 2;
return class {
m() {
var _arguments10 = arguments;
Expand Down
32 changes: 24 additions & 8 deletions packages/babel-traverse/src/path/conversion.ts
Expand Up @@ -231,9 +231,22 @@ function hoistFunctionEnvironment(

// Convert all "arguments" references in the arrow to point at the alias.
if (argumentsPaths.length > 0) {
const argumentsBinding = getBinding(thisEnvFn, "arguments", () =>
t.identifier("arguments"),
);
const argumentsBinding = getBinding(thisEnvFn, "arguments", () => {
const args = () => t.identifier("arguments");
if (thisEnvFn.scope.path.isProgram()) {
return t.conditionalExpression(
t.binaryExpression(
"===",
t.unaryExpression("typeof", args()),
t.stringLiteral("undefined"),
),
thisEnvFn.scope.buildUndefinedNode(),
args(),
);
} else {
return args();
}
});

argumentsPaths.forEach(argumentsChild => {
const argsRef = t.identifier(argumentsBinding);
Expand Down Expand Up @@ -586,17 +599,20 @@ function getScopeInformation(fnPath) {
if (child.get("object").isSuper()) superProps.push(child);
},
ReferencedIdentifier(child) {
if (child.node.name !== "arguments") return;

let curr = child.scope;
do {
if (curr.hasOwnBinding("arguments")) return;
if (curr.hasOwnBinding("arguments")) {
curr.rename("arguments");
return;
}
if (curr.path.isFunction() && !curr.path.isArrowFunctionExpression()) {
break;
}
if (child.node.name !== "arguments") return;

curr.rename("arguments");
argumentsPaths.push(child);
} while ((curr = curr.parent));

argumentsPaths.push(child);
},
MetaProperty(child) {
if (!child.get("meta").isIdentifier({ name: "new" })) return;
Expand Down

0 comments on commit 2cbb3ec

Please sign in to comment.