Skip to content

Commit 39d9901

Browse files
Fixed Bad/Late super baselines
1 parent dea7150 commit 39d9901

File tree

28 files changed

+332
-87
lines changed

28 files changed

+332
-87
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
tests/cases/conformance/classes/members/privateNames/privateNameBadSuper.ts(4,3): error TS2376: A 'super' call must be the first statement in the constructor to refer to 'super' or 'this' when a derived class contains initialized properties, parameter properties, or private identifiers.
2+
tests/cases/conformance/classes/members/privateNames/privateNameBadSuper.ts(5,5): error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
3+
4+
5+
==== tests/cases/conformance/classes/members/privateNames/privateNameBadSuper.ts (2 errors) ====
6+
class B {};
7+
class A extends B {
8+
#x;
9+
constructor() {
10+
~~~~~~~~~~~~~~~
11+
this;
12+
~~~~~~~~~
13+
~~~~
14+
!!! error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
15+
super();
16+
~~~~~~~~~~~~
17+
}
18+
~~~
19+
!!! error TS2376: A 'super' call must be the first statement in the constructor to refer to 'super' or 'this' when a derived class contains initialized properties, parameter properties, or private identifiers.
20+
}

tests/baselines/reference/privateNameBadSuper.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
//// [privateNameBadSuper.ts]
22
class B {};
33
class A extends B {
4-
#x;
5-
constructor() {
6-
void 0; // Error: 'super' call must come first
7-
super();
8-
}
4+
#x;
5+
constructor() {
6+
this;
7+
super();
8+
}
99
}
1010

1111
//// [privateNameBadSuper.js]
@@ -15,7 +15,7 @@ class B {
1515
;
1616
class A extends B {
1717
constructor() {
18-
void 0; // Error: 'super' call must come first
18+
this;
1919
super();
2020
_A_x.set(this, void 0);
2121
}

tests/baselines/reference/privateNameBadSuper.symbols

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ class A extends B {
66
>A : Symbol(A, Decl(privateNameBadSuper.ts, 0, 11))
77
>B : Symbol(B, Decl(privateNameBadSuper.ts, 0, 0))
88

9-
#x;
9+
#x;
1010
>#x : Symbol(A.#x, Decl(privateNameBadSuper.ts, 1, 19))
1111

12-
constructor() {
13-
void 0; // Error: 'super' call must come first
14-
super();
12+
constructor() {
13+
this;
14+
>this : Symbol(A, Decl(privateNameBadSuper.ts, 0, 11))
15+
16+
super();
1517
>super : Symbol(B, Decl(privateNameBadSuper.ts, 0, 0))
16-
}
18+
}
1719
}

tests/baselines/reference/privateNameBadSuper.types

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,15 @@ class A extends B {
66
>A : A
77
>B : B
88

9-
#x;
9+
#x;
1010
>#x : any
1111

12-
constructor() {
13-
void 0; // Error: 'super' call must come first
14-
>void 0 : undefined
15-
>0 : 0
12+
constructor() {
13+
this;
14+
>this : this
1615

17-
super();
16+
super();
1817
>super() : void
1918
>super : typeof B
20-
}
19+
}
2120
}
Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
1-
tests/cases/conformance/classes/members/privateNames/privateNameBadSuperUseDefineForClassFields.ts(4,5): error TS2376: A 'super' call must be the first statement in the constructor when a class contains initialized properties, parameter properties, or private identifiers.
1+
tests/cases/conformance/classes/members/privateNames/privateNameBadSuperUseDefineForClassFields.ts(4,3): error TS2376: A 'super' call must be the first statement in the constructor to refer to 'super' or 'this' when a derived class contains initialized properties, parameter properties, or private identifiers.
2+
tests/cases/conformance/classes/members/privateNames/privateNameBadSuperUseDefineForClassFields.ts(5,5): error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
23

34

4-
==== tests/cases/conformance/classes/members/privateNames/privateNameBadSuperUseDefineForClassFields.ts (1 errors) ====
5+
==== tests/cases/conformance/classes/members/privateNames/privateNameBadSuperUseDefineForClassFields.ts (2 errors) ====
56
class B {};
67
class A extends B {
7-
#x;
8-
constructor() {
9-
~~~~~~~~~~~~~~~
10-
void 0; // Error: 'super' call must come first
11-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12-
super();
13-
~~~~~~~~~~~~~~~~
14-
}
15-
~~~~~
16-
!!! error TS2376: A 'super' call must be the first statement in the constructor when a class contains initialized properties, parameter properties, or private identifiers.
8+
#x;
9+
constructor() {
10+
~~~~~~~~~~~~~~~
11+
this;
12+
~~~~~~~~~
13+
~~~~
14+
!!! error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
15+
super();
16+
~~~~~~~~~~~~
17+
}
18+
~~~
19+
!!! error TS2376: A 'super' call must be the first statement in the constructor to refer to 'super' or 'this' when a derived class contains initialized properties, parameter properties, or private identifiers.
1720
}
1821

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
//// [privateNameBadSuperUseDefineForClassFields.ts]
22
class B {};
33
class A extends B {
4-
#x;
5-
constructor() {
6-
void 0; // Error: 'super' call must come first
7-
super();
8-
}
4+
#x;
5+
constructor() {
6+
this;
7+
super();
8+
}
99
}
1010

1111

@@ -16,7 +16,7 @@ class B {
1616
class A extends B {
1717
#x;
1818
constructor() {
19-
void 0; // Error: 'super' call must come first
19+
this;
2020
super();
2121
}
2222
}

tests/baselines/reference/privateNameBadSuperUseDefineForClassFields(target=es2022).symbols

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ class A extends B {
66
>A : Symbol(A, Decl(privateNameBadSuperUseDefineForClassFields.ts, 0, 11))
77
>B : Symbol(B, Decl(privateNameBadSuperUseDefineForClassFields.ts, 0, 0))
88

9-
#x;
9+
#x;
1010
>#x : Symbol(A.#x, Decl(privateNameBadSuperUseDefineForClassFields.ts, 1, 19))
1111

12-
constructor() {
13-
void 0; // Error: 'super' call must come first
14-
super();
12+
constructor() {
13+
this;
14+
>this : Symbol(A, Decl(privateNameBadSuperUseDefineForClassFields.ts, 0, 11))
15+
16+
super();
1517
>super : Symbol(B, Decl(privateNameBadSuperUseDefineForClassFields.ts, 0, 0))
16-
}
18+
}
1719
}
1820

tests/baselines/reference/privateNameBadSuperUseDefineForClassFields(target=es2022).types

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,16 @@ class A extends B {
66
>A : A
77
>B : B
88

9-
#x;
9+
#x;
1010
>#x : any
1111

12-
constructor() {
13-
void 0; // Error: 'super' call must come first
14-
>void 0 : undefined
15-
>0 : 0
12+
constructor() {
13+
this;
14+
>this : this
1615

17-
super();
16+
super();
1817
>super() : void
1918
>super : typeof B
20-
}
19+
}
2120
}
2221

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
tests/cases/conformance/classes/members/privateNames/privateNameBadSuperUseDefineForClassFields.ts(5,5): error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
2+
3+
4+
==== tests/cases/conformance/classes/members/privateNames/privateNameBadSuperUseDefineForClassFields.ts (1 errors) ====
5+
class B {};
6+
class A extends B {
7+
#x;
8+
constructor() {
9+
this;
10+
~~~~
11+
!!! error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
12+
super();
13+
}
14+
}
15+
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
//// [privateNameBadSuperUseDefineForClassFields.ts]
22
class B {};
33
class A extends B {
4-
#x;
5-
constructor() {
6-
void 0; // Error: 'super' call must come first
7-
super();
8-
}
4+
#x;
5+
constructor() {
6+
this;
7+
super();
8+
}
99
}
1010

1111

@@ -16,7 +16,7 @@ class B {
1616
class A extends B {
1717
#x;
1818
constructor() {
19-
void 0; // Error: 'super' call must come first
19+
this;
2020
super();
2121
}
2222
}

0 commit comments

Comments
 (0)