From 100d6daea7e40ad300dc69a4eed9a323e9b3c847 Mon Sep 17 00:00:00 2001 From: kingwl Date: Tue, 6 Apr 2021 14:34:04 +0800 Subject: [PATCH] Always grammar checker for override --- src/compiler/checker.ts | 8 ++++---- tests/baselines/reference/override7.errors.txt | 14 +++++++++++++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f5fc9912692c5..752b04ce46696 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -40385,7 +40385,7 @@ namespace ts { if (flags & ModifierFlags.AccessibilityModifier) { return grammarErrorOnNode(modifier, Diagnostics.Accessibility_modifier_already_seen); } - else if (compilerOptions.noImplicitOverride && flags & ModifierFlags.Override) { + else if (flags & ModifierFlags.Override) { return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, text, "override"); } else if (flags & ModifierFlags.Static) { @@ -40421,7 +40421,7 @@ namespace ts { else if (flags & ModifierFlags.Readonly) { return grammarErrorOnNode(modifier, Diagnostics._0_modifier_must_precede_1_modifier, "static", "readonly"); } - else if (compilerOptions.noImplicitOverride && flags & ModifierFlags.Override) { + else if (flags & ModifierFlags.Override) { return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_with_1_modifier, "static", "override"); } else if (flags & ModifierFlags.Async) { @@ -40488,7 +40488,7 @@ namespace ts { else if (flags & ModifierFlags.Async) { return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (compilerOptions.noImplicitOverride && flags & ModifierFlags.Override) { + else if (flags & ModifierFlags.Override) { return grammarErrorOnNode(modifier, Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "override"); } else if (isClassLike(node.parent) && !isPropertyDeclaration(node)) { @@ -40565,7 +40565,7 @@ namespace ts { if (flags & ModifierFlags.Abstract) { return grammarErrorOnNode(lastStatic!, Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "abstract"); // TODO: GH#18217 } - if (compilerOptions.noImplicitOverride && flags & ModifierFlags.Override) { + if (flags & ModifierFlags.Override) { return grammarErrorOnNode(lastOverride!, Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration, "override"); // TODO: GH#18217 } else if (flags & ModifierFlags.Async) { diff --git a/tests/baselines/reference/override7.errors.txt b/tests/baselines/reference/override7.errors.txt index 69e96245c3b1c..624d8d6d749eb 100644 --- a/tests/baselines/reference/override7.errors.txt +++ b/tests/baselines/reference/override7.errors.txt @@ -1,12 +1,16 @@ +tests/cases/conformance/override/override7.ts(11,14): error TS1040: 'override' modifier cannot be used in an ambient context. +tests/cases/conformance/override/override7.ts(17,14): error TS1243: 'static' modifier cannot be used with 'override' modifier. tests/cases/conformance/override/override7.ts(19,14): error TS1030: 'override' modifier already seen. 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'. tests/cases/conformance/override/override7.ts(21,21): error TS4113: This member cannot have an 'override' modifier because it is not declared in the base class 'B'. +tests/cases/conformance/override/override7.ts(22,14): error TS1029: 'public' modifier must precede 'override' modifier. tests/cases/conformance/override/override7.ts(22,21): error TS4113: This member cannot have an 'override' modifier because it is not declared in the base class 'B'. +tests/cases/conformance/override/override7.ts(24,5): error TS1089: 'override' modifier cannot appear on a constructor declaration. tests/cases/conformance/override/override7.ts(41,23): error TS4112: This member cannot have an 'override' modifier because its containing class 'AND' does not extend another class. 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. -==== tests/cases/conformance/override/override7.ts (6 errors) ==== +==== tests/cases/conformance/override/override7.ts (10 errors) ==== class B { p1: number = 1; p2: number = 2; @@ -18,12 +22,16 @@ tests/cases/conformance/override/override7.ts(42,23): error TS4112: This member declare p1: number override declare p2: number; + ~~~~~~~ +!!! error TS1040: 'override' modifier cannot be used in an ambient context. readonly override p3: number; override readonly p4: number; override static sp: number; + ~~~~~~ +!!! error TS1243: 'static' modifier cannot be used with 'override' modifier. override override oop: number; ~~~~~~~~ @@ -35,10 +43,14 @@ tests/cases/conformance/override/override7.ts(42,23): error TS4112: This member ~~ !!! error TS4113: This member cannot have an 'override' modifier because it is not declared in the base class 'B'. override public op: number; + ~~~~~~ +!!! error TS1029: 'public' modifier must precede 'override' modifier. ~~ !!! error TS4113: This member cannot have an 'override' modifier because it is not declared in the base class 'B'. override constructor () { + ~~~~~~~~ +!!! error TS1089: 'override' modifier cannot appear on a constructor declaration. super(); } }