Skip to content

Commit 6f8c3b0

Browse files
authored
fix(43957): insert Override keyword after static modifier (#43959)
1 parent 2ef2718 commit 6f8c3b0

File tree

3 files changed

+40
-3
lines changed

3 files changed

+40
-3
lines changed

src/services/codefixes/fixOverrideModifier.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,13 @@ namespace ts.codefix {
8181

8282
function doAddOverrideModifierChange(changeTracker: textChanges.ChangeTracker, sourceFile: SourceFile, pos: number) {
8383
const classElement = findContainerClassElement(sourceFile, pos);
84-
const accessibilityModifier = find(classElement.modifiers || emptyArray, m => isAccessibilityModifier(m.kind));
85-
const modifierPos = accessibilityModifier ? accessibilityModifier.end :
84+
const modifiers = classElement.modifiers || emptyArray;
85+
const staticModifier = find(modifiers, isStaticModifier);
86+
const accessibilityModifier = find(modifiers, m => isAccessibilityModifier(m.kind));
87+
const modifierPos = staticModifier ? staticModifier.end :
88+
accessibilityModifier ? accessibilityModifier.end :
8689
classElement.decorators ? skipTrivia(sourceFile.text, classElement.decorators.end) : classElement.getStart(sourceFile);
87-
const options = accessibilityModifier ? { prefix: " " } : { suffix: " " };
90+
const options = accessibilityModifier || staticModifier ? { prefix: " " } : { suffix: " " };
8891
changeTracker.insertModifierAt(sourceFile, modifierPos, SyntaxKind.OverrideKeyword, options);
8992
}
9093

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
// @noImplicitOverride: true
4+
5+
////class Foo {
6+
//// protected static readonly p = '';
7+
////}
8+
////
9+
////export class Bar extends Foo {
10+
//// [|protected static readonly p = ''|];
11+
////}
12+
13+
verify.codeFix({
14+
description: "Add 'override' modifier",
15+
newRangeContent: "protected static override readonly p = ''",
16+
index: 0
17+
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
// @noImplicitOverride: true
4+
5+
////class Foo {
6+
//// static readonly p = '';
7+
////}
8+
////
9+
////export class Bar extends Foo {
10+
//// [|static readonly p = ''|];
11+
////}
12+
13+
verify.codeFix({
14+
description: "Add 'override' modifier",
15+
newRangeContent: "static override readonly p = ''",
16+
index: 0
17+
})

0 commit comments

Comments
 (0)