@@ -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 }
0 commit comments