Skip to content

Commit 9fec775

Browse files
authored
Merge pull request #12217 from subzey/feature/rest-loop-index
Codegen: Do not subtract 0 in arguments to rest array loop
2 parents a2b13d0 + 3e52f3d commit 9fec775

File tree

96 files changed

+170
-168
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+170
-168
lines changed

src/compiler/transformers/es2015.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1306,7 +1306,9 @@ namespace ts {
13061306
createAssignment(
13071307
createElementAccess(
13081308
expressionName,
1309-
createSubtract(temp, createLiteral(restIndex))
1309+
restIndex === 0
1310+
? temp
1311+
: createSubtract(temp, createLiteral(restIndex))
13101312
),
13111313
createElementAccess(createIdentifier("arguments"), temp)
13121314
),

tests/baselines/reference/accessorWithRestParam.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ var C = (function () {
1313
set: function () {
1414
var v = [];
1515
for (var _i = 0; _i < arguments.length; _i++) {
16-
v[_i - 0] = arguments[_i];
16+
v[_i] = arguments[_i];
1717
}
1818
},
1919
enumerable: true,
@@ -23,7 +23,7 @@ var C = (function () {
2323
set: function () {
2424
var v2 = [];
2525
for (var _i = 0; _i < arguments.length; _i++) {
26-
v2[_i - 0] = arguments[_i];
26+
v2[_i] = arguments[_i];
2727
}
2828
},
2929
enumerable: true,

tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,14 @@ a = function () { return 1; }; // ok, same number of required params
5252
a = function () {
5353
var args = [];
5454
for (var _i = 0; _i < arguments.length; _i++) {
55-
args[_i - 0] = arguments[_i];
55+
args[_i] = arguments[_i];
5656
}
5757
return 1;
5858
}; // ok, same number of required params
5959
a = function () {
6060
var args = [];
6161
for (var _i = 0; _i < arguments.length; _i++) {
62-
args[_i - 0] = arguments[_i];
62+
args[_i] = arguments[_i];
6363
}
6464
return 1;
6565
}; // error, type mismatch
@@ -72,7 +72,7 @@ a2 = function () { return 1; }; // ok, fewer required params
7272
a2 = function () {
7373
var args = [];
7474
for (var _i = 0; _i < arguments.length; _i++) {
75-
args[_i - 0] = arguments[_i];
75+
args[_i] = arguments[_i];
7676
}
7777
return 1;
7878
}; // ok, fewer required params

tests/baselines/reference/baseTypeAfterDerivedType.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ var Derived2 = (function () {
2323
Derived2.prototype.method = function () {
2424
var args = [];
2525
for (var _i = 0; _i < arguments.length; _i++) {
26-
args[_i - 0] = arguments[_i];
26+
args[_i] = arguments[_i];
2727
}
2828
};
2929
return Derived2;

tests/baselines/reference/checkSuperCallBeforeThisAccessing5.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ var Based = (function () {
1717
function Based() {
1818
var arg = [];
1919
for (var _i = 0; _i < arguments.length; _i++) {
20-
arg[_i - 0] = arguments[_i];
20+
arg[_i] = arguments[_i];
2121
}
2222
}
2323
return Based;

tests/baselines/reference/checkSuperCallBeforeThisAccessing6.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ var Base = (function () {
2020
function Base() {
2121
var arg = [];
2222
for (var _i = 0; _i < arguments.length; _i++) {
23-
arg[_i - 0] = arguments[_i];
23+
arg[_i] = arguments[_i];
2424
}
2525
}
2626
return Base;

tests/baselines/reference/checkSuperCallBeforeThisAccessing8.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ var Base = (function () {
2020
function Base() {
2121
var arg = [];
2222
for (var _i = 0; _i < arguments.length; _i++) {
23-
arg[_i - 0] = arguments[_i];
23+
arg[_i] = arguments[_i];
2424
}
2525
}
2626
return Base;

tests/baselines/reference/collisionArgumentsArrowFunctions.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ var f1NoError = function (arguments) {
3737
var f2 = function () {
3838
var restParameters = [];
3939
for (var _i = 0; _i < arguments.length; _i++) {
40-
restParameters[_i - 0] = arguments[_i];
40+
restParameters[_i] = arguments[_i];
4141
}
4242
var arguments = 10; // No Error
4343
};

tests/baselines/reference/collisionArgumentsClassConstructor.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ var c2 = (function () {
118118
function c2() {
119119
var restParameters = [];
120120
for (var _i = 0; _i < arguments.length; _i++) {
121-
restParameters[_i - 0] = arguments[_i];
121+
restParameters[_i] = arguments[_i];
122122
}
123123
var arguments = 10; // no error
124124
}

tests/baselines/reference/collisionArgumentsClassMethod.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ var c3 = (function () {
9494
c3.prototype.foo = function () {
9595
var restParameters = [];
9696
for (var _i = 0; _i < arguments.length; _i++) {
97-
restParameters[_i - 0] = arguments[_i];
97+
restParameters[_i] = arguments[_i];
9898
}
9999
var arguments = 10; // no error
100100
};

0 commit comments

Comments
 (0)