Skip to content

Commit 3a22b3e

Browse files
authored
fix(43535): preserves 'override' modifier in JavaScript output (#43536)
1 parent a56baa7 commit 3a22b3e

8 files changed

+285
-0
lines changed

src/compiler/factory/nodeFactory.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -968,6 +968,7 @@ namespace ts {
968968
case SyntaxKind.BigIntKeyword:
969969
case SyntaxKind.NeverKeyword:
970970
case SyntaxKind.ObjectKeyword:
971+
case SyntaxKind.OverrideKeyword:
971972
case SyntaxKind.StringKeyword:
972973
case SyntaxKind.BooleanKeyword:
973974
case SyntaxKind.SymbolKeyword:
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
//// [override12.ts]
2+
class A {
3+
public m1(): number {
4+
return 0;
5+
}
6+
7+
public m2(): number {
8+
return 0;
9+
}
10+
11+
public m3(): void {}
12+
}
13+
14+
class B extends A {
15+
override m1() {
16+
return 10;
17+
}
18+
19+
override m2(): number {
20+
return 30;
21+
}
22+
23+
override m3(): void {}
24+
}
25+
26+
27+
//// [override12.js]
28+
class A {
29+
m1() {
30+
return 0;
31+
}
32+
m2() {
33+
return 0;
34+
}
35+
m3() { }
36+
}
37+
class B extends A {
38+
m1() {
39+
return 10;
40+
}
41+
m2() {
42+
return 30;
43+
}
44+
m3() { }
45+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
=== tests/cases/conformance/override/override12.ts ===
2+
class A {
3+
>A : Symbol(A, Decl(override12.ts, 0, 0))
4+
5+
public m1(): number {
6+
>m1 : Symbol(A.m1, Decl(override12.ts, 0, 9))
7+
8+
return 0;
9+
}
10+
11+
public m2(): number {
12+
>m2 : Symbol(A.m2, Decl(override12.ts, 3, 5))
13+
14+
return 0;
15+
}
16+
17+
public m3(): void {}
18+
>m3 : Symbol(A.m3, Decl(override12.ts, 7, 5))
19+
}
20+
21+
class B extends A {
22+
>B : Symbol(B, Decl(override12.ts, 10, 1))
23+
>A : Symbol(A, Decl(override12.ts, 0, 0))
24+
25+
override m1() {
26+
>m1 : Symbol(B.m1, Decl(override12.ts, 12, 19))
27+
28+
return 10;
29+
}
30+
31+
override m2(): number {
32+
>m2 : Symbol(B.m2, Decl(override12.ts, 15, 5))
33+
34+
return 30;
35+
}
36+
37+
override m3(): void {}
38+
>m3 : Symbol(B.m3, Decl(override12.ts, 19, 5))
39+
}
40+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
=== tests/cases/conformance/override/override12.ts ===
2+
class A {
3+
>A : A
4+
5+
public m1(): number {
6+
>m1 : () => number
7+
8+
return 0;
9+
>0 : 0
10+
}
11+
12+
public m2(): number {
13+
>m2 : () => number
14+
15+
return 0;
16+
>0 : 0
17+
}
18+
19+
public m3(): void {}
20+
>m3 : () => void
21+
}
22+
23+
class B extends A {
24+
>B : B
25+
>A : A
26+
27+
override m1() {
28+
>m1 : () => number
29+
30+
return 10;
31+
>10 : 10
32+
}
33+
34+
override m2(): number {
35+
>m2 : () => number
36+
37+
return 30;
38+
>30 : 30
39+
}
40+
41+
override m3(): void {}
42+
>m3 : () => void
43+
}
44+
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
//// [override12.ts]
2+
class A {
3+
public m1(): number {
4+
return 0;
5+
}
6+
7+
public m2(): number {
8+
return 0;
9+
}
10+
11+
public m3(): void {}
12+
}
13+
14+
class B extends A {
15+
override m1() {
16+
return 10;
17+
}
18+
19+
override m2(): number {
20+
return 30;
21+
}
22+
23+
override m3(): void {}
24+
}
25+
26+
27+
//// [override12.js]
28+
class A {
29+
m1() {
30+
return 0;
31+
}
32+
m2() {
33+
return 0;
34+
}
35+
m3() { }
36+
}
37+
class B extends A {
38+
m1() {
39+
return 10;
40+
}
41+
m2() {
42+
return 30;
43+
}
44+
m3() { }
45+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
=== tests/cases/conformance/override/override12.ts ===
2+
class A {
3+
>A : Symbol(A, Decl(override12.ts, 0, 0))
4+
5+
public m1(): number {
6+
>m1 : Symbol(A.m1, Decl(override12.ts, 0, 9))
7+
8+
return 0;
9+
}
10+
11+
public m2(): number {
12+
>m2 : Symbol(A.m2, Decl(override12.ts, 3, 5))
13+
14+
return 0;
15+
}
16+
17+
public m3(): void {}
18+
>m3 : Symbol(A.m3, Decl(override12.ts, 7, 5))
19+
}
20+
21+
class B extends A {
22+
>B : Symbol(B, Decl(override12.ts, 10, 1))
23+
>A : Symbol(A, Decl(override12.ts, 0, 0))
24+
25+
override m1() {
26+
>m1 : Symbol(B.m1, Decl(override12.ts, 12, 19))
27+
28+
return 10;
29+
}
30+
31+
override m2(): number {
32+
>m2 : Symbol(B.m2, Decl(override12.ts, 15, 5))
33+
34+
return 30;
35+
}
36+
37+
override m3(): void {}
38+
>m3 : Symbol(B.m3, Decl(override12.ts, 19, 5))
39+
}
40+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
=== tests/cases/conformance/override/override12.ts ===
2+
class A {
3+
>A : A
4+
5+
public m1(): number {
6+
>m1 : () => number
7+
8+
return 0;
9+
>0 : 0
10+
}
11+
12+
public m2(): number {
13+
>m2 : () => number
14+
15+
return 0;
16+
>0 : 0
17+
}
18+
19+
public m3(): void {}
20+
>m3 : () => void
21+
}
22+
23+
class B extends A {
24+
>B : B
25+
>A : A
26+
27+
override m1() {
28+
>m1 : () => number
29+
30+
return 10;
31+
>10 : 10
32+
}
33+
34+
override m2(): number {
35+
>m2 : () => number
36+
37+
return 30;
38+
>30 : 30
39+
}
40+
41+
override m3(): void {}
42+
>m3 : () => void
43+
}
44+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// @noImplicitOverride: true
2+
// @target: es2015,esnext
3+
4+
class A {
5+
public m1(): number {
6+
return 0;
7+
}
8+
9+
public m2(): number {
10+
return 0;
11+
}
12+
13+
public m3(): void {}
14+
}
15+
16+
class B extends A {
17+
override m1() {
18+
return 10;
19+
}
20+
21+
override m2(): number {
22+
return 30;
23+
}
24+
25+
override m3(): void {}
26+
}

0 commit comments

Comments
 (0)