Skip to content

Commit dca93ac

Browse files
committed
make lint happy
1 parent c0edf6f commit dca93ac

12 files changed

+373
-18
lines changed

src/compiler/checker.ts

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34421,14 +34421,7 @@ namespace ts {
3442134421

3442234422
for (const member of node.members) {
3442334423
const hasOverride = hasOverrideModifier(member);
34424-
const hasAmbient = hasAmbientModifier(member);
34425-
34426-
if (hasAmbient) {
34427-
if (hasOverride) {
34428-
error(member, Diagnostics.Override_modifier_cannot_be_used_with_declare_modifier);
34429-
}
34430-
}
34431-
else if (baseWithThis) {
34424+
if (baseWithThis) {
3443234425
const declaredProp = member.name && getSymbolAtLocation(member.name) || getSymbolAtLocation(member);
3443334426
if (declaredProp) {
3443434427
const baseClassName = typeToString(baseWithThis);
@@ -37749,7 +37742,7 @@ namespace ts {
3774937742
return quickResult;
3775037743
}
3775137744

37752-
let lastStatic: Node | undefined, lastDeclare: Node | undefined, lastAsync: Node | undefined, lastReadonly: Node | undefined;
37745+
let lastStatic: Node | undefined, lastDeclare: Node | undefined, lastAsync: Node | undefined, lastReadonly: Node | undefined, lastOverride: Node | undefined;
3775337746
let flags = ModifierFlags.None;
3775437747
for (const modifier of node.modifiers!) {
3775537748
if (modifier.kind !== SyntaxKind.ReadonlyKeyword) {
@@ -37766,6 +37759,23 @@ namespace ts {
3776637759
return grammarErrorOnNode(node, Diagnostics.A_class_member_cannot_have_the_0_keyword, tokenToString(SyntaxKind.ConstKeyword));
3776737760
}
3776837761
break;
37762+
case SyntaxKind.OverrideKeyword:
37763+
if (!compilerOptions.pedanticOverride) {
37764+
return grammarErrorOnNode(modifier, Diagnostics.Override_modifier_must_be_used_with_pedanticOverride_compiler_option);
37765+
}
37766+
if (flags & ModifierFlags.Override) {
37767+
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_already_seen, "override");
37768+
}
37769+
else if(flags & ModifierFlags.Ambient) {
37770+
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "override", "declare");
37771+
}
37772+
else if(flags & ModifierFlags.Static) {
37773+
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "override");
37774+
}
37775+
flags |= ModifierFlags.Override;
37776+
lastOverride = modifier;
37777+
break;
37778+
3776937779
case SyntaxKind.PublicKeyword:
3777037780
case SyntaxKind.ProtectedKeyword:
3777137781
case SyntaxKind.PrivateKeyword:
@@ -37774,6 +37784,9 @@ namespace ts {
3777437784
if (flags & ModifierFlags.AccessibilityModifier) {
3777537785
return grammarErrorOnNode(modifier, Diagnostics.Accessibility_modifier_already_seen);
3777637786
}
37787+
else if (compilerOptions.pedanticOverride && flags & ModifierFlags.Override) {
37788+
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "override");
37789+
}
3777737790
else if (flags & ModifierFlags.Static) {
3777837791
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "static");
3777937792
}
@@ -37807,6 +37820,9 @@ namespace ts {
3780737820
else if (flags & ModifierFlags.Readonly) {
3780837821
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "readonly");
3780937822
}
37823+
else if (compilerOptions.pedanticOverride && flags & ModifierFlags.Override) {
37824+
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "override");
37825+
}
3781037826
else if (flags & ModifierFlags.Async) {
3781137827
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "async");
3781237828
}
@@ -37874,6 +37890,9 @@ namespace ts {
3787437890
else if (flags & ModifierFlags.Async) {
3787537891
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async");
3787637892
}
37893+
else if (compilerOptions.pedanticOverride && flags & ModifierFlags.Override) {
37894+
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "override");
37895+
}
3787737896
else if (isClassLike(node.parent) && !isPropertyDeclaration(node)) {
3787837897
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare");
3787937898
}
@@ -37941,6 +37960,9 @@ namespace ts {
3794137960
if (flags & ModifierFlags.Abstract) {
3794237961
return grammarErrorOnNode(lastStatic!, Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "abstract"); // TODO: GH#18217
3794337962
}
37963+
if (compilerOptions.pedanticOverride && flags & ModifierFlags.Override) {
37964+
return grammarErrorOnNode(lastOverride!, Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "override"); // TODO: GH#18217
37965+
}
3794437966
else if (flags & ModifierFlags.Async) {
3794537967
return grammarErrorOnNode(lastAsync!, Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "async");
3794637968
}

src/compiler/diagnosticMessages.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3373,7 +3373,7 @@
33733373
"category": "Error",
33743374
"code": 4113
33753375
},
3376-
"Override modifier cannot be used with declare modifier.": {
3376+
"'Override' modifier must be used with 'pedanticOverride ' compiler option": {
33773377
"category": "Error",
33783378
"code": 4114
33793379
},
Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,46 @@
1-
tests/cases/conformance/override/override5.ts(9,22): error TS4114: Override modifier cannot be used with declare modifier.
1+
tests/cases/conformance/override/override5.ts(10,13): error TS4113: Method must have override modifier because it's override the base class 'B'.
2+
tests/cases/conformance/override/override5.ts(12,14): error TS1040: 'override' modifier cannot be used in an ambient context.
3+
tests/cases/conformance/override/override5.ts(14,14): error TS1243: 'static' modifier cannot be used with 'override' modifier.
4+
tests/cases/conformance/override/override5.ts(16,14): error TS1030: 'override' modifier already seen.
5+
tests/cases/conformance/override/override5.ts(19,14): error TS1029: 'public' modifier must precede 'override' modifier.
6+
tests/cases/conformance/override/override5.ts(21,5): error TS1089: 'override' modifier cannot appear on a constructor declaration.
27

38

4-
==== tests/cases/conformance/override/override5.ts (1 errors) ====
9+
==== tests/cases/conformance/override/override5.ts (6 errors) ====
510
class B {
611
p1: number = 1;
712
p2: number = 2;
13+
oop: number;
14+
pp: number;
15+
op: number;
816
}
917

1018
class D extends B{
1119
declare p1: number
20+
~~
21+
!!! error TS4113: Method must have override modifier because it's override the base class 'B'.
1222

1323
override declare p2: number
14-
~~
15-
!!! error TS4114: Override modifier cannot be used with declare modifier.
24+
~~~~~~~
25+
!!! error TS1040: 'override' modifier cannot be used in an ambient context.
26+
27+
override static sp: number;
28+
~~~~~~
29+
!!! error TS1243: 'static' modifier cannot be used with 'override' modifier.
30+
31+
override override oop: number;
32+
~~~~~~~~
33+
!!! error TS1030: 'override' modifier already seen.
34+
35+
public override pp: number;
36+
override public op: number;
37+
~~~~~~
38+
!!! error TS1029: 'public' modifier must precede 'override' modifier.
39+
40+
override constructor () {
41+
~~~~~~~~
42+
!!! error TS1089: 'override' modifier cannot appear on a constructor declaration.
43+
super();
44+
}
1645
}
1746

tests/baselines/reference/override5.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,26 @@
22
class B {
33
p1: number = 1;
44
p2: number = 2;
5+
oop: number;
6+
pp: number;
7+
op: number;
58
}
69

710
class D extends B{
811
declare p1: number
912

1013
override declare p2: number
14+
15+
override static sp: number;
16+
17+
override override oop: number;
18+
19+
public override pp: number;
20+
override public op: number;
21+
22+
override constructor () {
23+
super();
24+
}
1125
}
1226

1327

@@ -35,7 +49,7 @@ var B = /** @class */ (function () {
3549
var D = /** @class */ (function (_super) {
3650
__extends(D, _super);
3751
function D() {
38-
return _super !== null && _super.apply(this, arguments) || this;
52+
return _super.call(this) || this;
3953
}
4054
return D;
4155
}(B));
@@ -45,8 +59,16 @@ var D = /** @class */ (function (_super) {
4559
declare class B {
4660
p1: number;
4761
p2: number;
62+
oop: number;
63+
pp: number;
64+
op: number;
4865
}
4966
declare class D extends B {
5067
p1: number;
5168
override p2: number;
69+
override static sp: number;
70+
override override oop: number;
71+
override pp: number;
72+
override op: number;
73+
override constructor();
5274
}

tests/baselines/reference/override5.symbols

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,42 @@ class B {
77

88
p2: number = 2;
99
>p2 : Symbol(B.p2, Decl(override5.ts, 1, 19))
10+
11+
oop: number;
12+
>oop : Symbol(B.oop, Decl(override5.ts, 2, 19))
13+
14+
pp: number;
15+
>pp : Symbol(B.pp, Decl(override5.ts, 3, 16))
16+
17+
op: number;
18+
>op : Symbol(B.op, Decl(override5.ts, 4, 15))
1019
}
1120

1221
class D extends B{
13-
>D : Symbol(D, Decl(override5.ts, 3, 1))
22+
>D : Symbol(D, Decl(override5.ts, 6, 1))
1423
>B : Symbol(B, Decl(override5.ts, 0, 0))
1524

1625
declare p1: number
17-
>p1 : Symbol(D.p1, Decl(override5.ts, 5, 18))
26+
>p1 : Symbol(D.p1, Decl(override5.ts, 8, 18))
1827

1928
override declare p2: number
20-
>p2 : Symbol(D.p2, Decl(override5.ts, 6, 22))
29+
>p2 : Symbol(D.p2, Decl(override5.ts, 9, 22))
30+
31+
override static sp: number;
32+
>sp : Symbol(D.sp, Decl(override5.ts, 11, 31))
33+
34+
override override oop: number;
35+
>oop : Symbol(D.oop, Decl(override5.ts, 13, 31))
36+
37+
public override pp: number;
38+
>pp : Symbol(D.pp, Decl(override5.ts, 15, 34))
39+
40+
override public op: number;
41+
>op : Symbol(D.op, Decl(override5.ts, 17, 31))
42+
43+
override constructor () {
44+
super();
45+
>super : Symbol(B, Decl(override5.ts, 0, 0))
46+
}
2147
}
2248

tests/baselines/reference/override5.types

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ class B {
99
p2: number = 2;
1010
>p2 : number
1111
>2 : 2
12+
13+
oop: number;
14+
>oop : number
15+
16+
pp: number;
17+
>pp : number
18+
19+
op: number;
20+
>op : number
1221
}
1322

1423
class D extends B{
@@ -20,5 +29,23 @@ class D extends B{
2029

2130
override declare p2: number
2231
>p2 : number
32+
33+
override static sp: number;
34+
>sp : number
35+
36+
override override oop: number;
37+
>oop : number
38+
39+
public override pp: number;
40+
>pp : number
41+
42+
override public op: number;
43+
>op : number
44+
45+
override constructor () {
46+
super();
47+
>super() : void
48+
>super : typeof B
49+
}
2350
}
2451

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
tests/cases/conformance/override/override7.ts(9,5): error TS4114: 'Override' modifier must be used with 'pedanticOverride ' compiler option
2+
tests/cases/conformance/override/override7.ts(11,5): error TS4114: 'Override' modifier must be used with 'pedanticOverride ' compiler option
3+
tests/cases/conformance/override/override7.ts(13,5): error TS4114: 'Override' modifier must be used with 'pedanticOverride ' compiler option
4+
tests/cases/conformance/override/override7.ts(15,12): error TS4114: 'Override' modifier must be used with 'pedanticOverride ' compiler option
5+
tests/cases/conformance/override/override7.ts(16,5): error TS4114: 'Override' modifier must be used with 'pedanticOverride ' compiler option
6+
tests/cases/conformance/override/override7.ts(18,5): error TS4114: 'Override' modifier must be used with 'pedanticOverride ' compiler option
7+
8+
9+
==== tests/cases/conformance/override/override7.ts (6 errors) ====
10+
class B {
11+
p1: number = 1;
12+
p2: number = 2;
13+
}
14+
15+
class D extends B{
16+
declare p1: number
17+
18+
override declare p2: number
19+
~~~~~~~~
20+
!!! error TS4114: 'Override' modifier must be used with 'pedanticOverride ' compiler option
21+
22+
override static sp: number;
23+
~~~~~~~~
24+
!!! error TS4114: 'Override' modifier must be used with 'pedanticOverride ' compiler option
25+
26+
override override oop: number;
27+
~~~~~~~~
28+
!!! error TS4114: 'Override' modifier must be used with 'pedanticOverride ' compiler option
29+
30+
public override pp: number;
31+
~~~~~~~~
32+
!!! error TS4114: 'Override' modifier must be used with 'pedanticOverride ' compiler option
33+
override public op: number;
34+
~~~~~~~~
35+
!!! error TS4114: 'Override' modifier must be used with 'pedanticOverride ' compiler option
36+
37+
override constructor () {
38+
~~~~~~~~
39+
!!! error TS4114: 'Override' modifier must be used with 'pedanticOverride ' compiler option
40+
super();
41+
}
42+
}
43+

0 commit comments

Comments
 (0)