Skip to content

Commit a7acde3

Browse files
Fix: default rest argument array elements as undefined (#14032)
1 parent add64e8 commit a7acde3

7 files changed

Lines changed: 38 additions & 0 deletions

File tree

‎packages/babel-plugin-transform-parameters/src/rest.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,8 @@ export default function convertFunctionRest(path) {
242242

243243
let rest = node.params.pop().argument;
244244

245+
if (rest.name === "arguments") scope.rename(rest.name);
246+
245247
const argsId = t.identifier("arguments");
246248

247249
if (t.isPattern(rest)) {
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
function func(...arguments) {
2+
return arguments;
3+
}
4+
expect(func(1, 2, 3)).toStrictEqual([1, 2, 3])
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
function func(...arguments) {
2+
console.log(arguments); // [1, 2, 3]
3+
}
4+
func(1, 2, 3);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function func() {
2+
for (var _len = arguments.length, _arguments = new Array(_len), _key = 0; _key < _len; _key++) {
3+
_arguments[_key] = arguments[_key];
4+
}
5+
6+
console.log(_arguments); // [1, 2, 3]
7+
}
8+
9+
func(1, 2, 3);
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function func(a, b, ...arguments) {
2+
return [a, b, arguments];
3+
}
4+
5+
expect(func('a', 'b', 1, 2, 3)).toStrictEqual(['a', 'b', [1, 2, 3]])
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function func(a, b, ...arguments) {
2+
return [a, b, arguments];
3+
}
4+
5+
func('a', 'b', 1, 2, 3)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function func(a, b) {
2+
for (var _len = arguments.length, _arguments = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
3+
_arguments[_key - 2] = arguments[_key];
4+
}
5+
6+
return [a, b, _arguments];
7+
}
8+
9+
func('a', 'b', 1, 2, 3);

0 commit comments

Comments
 (0)