Skip to content

Commit fb87079

Browse files
authored
Enforce override precedes readonly (#43545)
1 parent 8581a59 commit fb87079

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

src/compiler/checker.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40373,6 +40373,9 @@ namespace ts {
4037340373
else if (flags & ModifierFlags.Static) {
4037440374
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "override");
4037540375
}
40376+
else if (flags & ModifierFlags.Readonly) {
40377+
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "override", "readonly");
40378+
}
4037640379
if (node.kind === SyntaxKind.Parameter) {
4037740380
return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_appear_on_a_parameter, "override");
4037840381
}

tests/baselines/reference/override5.errors.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
tests/cases/conformance/override/override5.ts(12,13): error TS4114: This member must have an 'override' modifier because it overrides a member in the base class 'B'.
22
tests/cases/conformance/override/override5.ts(14,14): error TS1040: 'override' modifier cannot be used in an ambient context.
3+
tests/cases/conformance/override/override5.ts(16,14): error TS1029: 'override' modifier must precede 'readonly' modifier.
34
tests/cases/conformance/override/override5.ts(20,14): error TS1243: 'static' modifier cannot be used with 'override' modifier.
45
tests/cases/conformance/override/override5.ts(22,14): error TS1030: 'override' modifier already seen.
56
tests/cases/conformance/override/override5.ts(25,14): error TS1029: 'public' modifier must precede 'override' modifier.
@@ -8,7 +9,7 @@ tests/cases/conformance/override/override5.ts(44,23): error TS4112: This member
89
tests/cases/conformance/override/override5.ts(45,23): error TS4112: This member cannot have an 'override' modifier because its containing class 'AND' does not extend another class.
910

1011

11-
==== tests/cases/conformance/override/override5.ts (8 errors) ====
12+
==== tests/cases/conformance/override/override5.ts (9 errors) ====
1213
class B {
1314
p1: number = 1;
1415
p2: number = 2;
@@ -29,6 +30,8 @@ tests/cases/conformance/override/override5.ts(45,23): error TS4112: This member
2930
!!! error TS1040: 'override' modifier cannot be used in an ambient context.
3031

3132
readonly override p3: number;
33+
~~~~~~~~
34+
!!! error TS1029: 'override' modifier must precede 'readonly' modifier.
3235

3336
override readonly p4: number;
3437

tests/baselines/reference/override7.errors.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
tests/cases/conformance/override/override7.ts(11,14): error TS1040: 'override' modifier cannot be used in an ambient context.
2+
tests/cases/conformance/override/override7.ts(13,14): error TS1029: 'override' modifier must precede 'readonly' modifier.
23
tests/cases/conformance/override/override7.ts(17,14): error TS1243: 'static' modifier cannot be used with 'override' modifier.
34
tests/cases/conformance/override/override7.ts(19,14): error TS1030: 'override' modifier already seen.
45
tests/cases/conformance/override/override7.ts(19,23): error TS4113: This member cannot have an 'override' modifier because it is not declared in the base class 'B'.
@@ -10,7 +11,7 @@ tests/cases/conformance/override/override7.ts(41,23): error TS4112: This member
1011
tests/cases/conformance/override/override7.ts(42,23): error TS4112: This member cannot have an 'override' modifier because its containing class 'AND' does not extend another class.
1112

1213

13-
==== tests/cases/conformance/override/override7.ts (10 errors) ====
14+
==== tests/cases/conformance/override/override7.ts (11 errors) ====
1415
class B {
1516
p1: number = 1;
1617
p2: number = 2;
@@ -26,6 +27,8 @@ tests/cases/conformance/override/override7.ts(42,23): error TS4112: This member
2627
!!! error TS1040: 'override' modifier cannot be used in an ambient context.
2728

2829
readonly override p3: number;
30+
~~~~~~~~
31+
!!! error TS1029: 'override' modifier must precede 'readonly' modifier.
2932

3033
override readonly p4: number;
3134

0 commit comments

Comments
 (0)