Skip to content

Commit d45098e

Browse files
committed
Update to match old TS version: parameter properties after prologue
1 parent bd2a2ec commit d45098e

File tree

2 files changed

+10
-16
lines changed

2 files changed

+10
-16
lines changed

src/compiler/transformers/classFields.ts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1359,22 +1359,16 @@ namespace ts {
13591359
if (parameterPropertyDeclarationCount > 0) {
13601360
const parameterProperties = visitNodes(constructor.body.statements, visitor, isStatement, indexOfFirstStatementAfterSuperAndPrologue, parameterPropertyDeclarationCount);
13611361

1362-
// If there was a super() call found, add parameter properties immediately after it
1363-
if (superStatementIndex >= 0) {
1364-
addRange(statements, parameterProperties);
1365-
}
1362+
let superAndPrologueStatementCount = prologueStatementCount;
13661363
// If a synthetic super() call was added, add them just after it
1367-
else if (needsSyntheticConstructor) {
1368-
statements = [
1369-
statements[0],
1370-
...parameterProperties,
1371-
...statements.slice(1),
1372-
];
1373-
}
1374-
// Since there wasn't a super() call, add them to the top of the constructor
1375-
else {
1376-
statements = [...parameterProperties, ...statements];
1364+
if (needsSyntheticConstructor) {
1365+
superAndPrologueStatementCount += 1;
13771366
}
1367+
statements = [
1368+
...statements.slice(0, superAndPrologueStatementCount),
1369+
...parameterProperties,
1370+
...statements.slice(superAndPrologueStatementCount),
1371+
];
13781372

13791373
indexOfFirstStatementAfterSuperAndPrologue += parameterPropertyDeclarationCount;
13801374
}

tests/baselines/reference/constructorWithParameterPropertiesAndPrivateFields.es2015.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
4545
var _A_privateField, _B_privateField;
4646
class A {
4747
constructor(arg, exposedField) {
48-
this.exposedField = exposedField;
4948
var _a;
49+
this.exposedField = exposedField;
5050
_A_privateField.set(this, void 0);
5151
(_a = this, { key: ({ set value(_b) { __classPrivateFieldSet(_a, _A_privateField, _b, "f"); } }).value } = arg);
5252
}
@@ -58,9 +58,9 @@ class A {
5858
_A_privateField = new WeakMap();
5959
class B {
6060
constructor(arg, exposedField) {
61-
this.exposedField = exposedField;
6261
"prologue";
6362
var _a;
63+
this.exposedField = exposedField;
6464
_B_privateField.set(this, void 0);
6565
(_a = this, { key: ({ set value(_b) { __classPrivateFieldSet(_a, _B_privateField, _b, "f"); } }).value } = arg);
6666
}

0 commit comments

Comments
 (0)