diff --git a/src/compiler/factory/nodeTests.ts b/src/compiler/factory/nodeTests.ts index 270fded5c92..7f5fda1994c 100644 --- a/src/compiler/factory/nodeTests.ts +++ b/src/compiler/factory/nodeTests.ts @@ -129,6 +129,11 @@ namespace ts { return node.kind === SyntaxKind.StaticKeyword; } + /* @internal */ + export function isAbstractModifier(node: Node): node is AbstractKeyword { + return node.kind === SyntaxKind.AbstractKeyword; + } + /*@internal*/ export function isSuperKeyword(node: Node): node is SuperExpression { return node.kind === SyntaxKind.SuperKeyword; diff --git a/src/services/codefixes/fixOverrideModifier.ts b/src/services/codefixes/fixOverrideModifier.ts index a804a5f97db..d267dececcf 100644 --- a/src/services/codefixes/fixOverrideModifier.ts +++ b/src/services/codefixes/fixOverrideModifier.ts @@ -89,11 +89,13 @@ namespace ts.codefix { const classElement = findContainerClassElementLike(sourceFile, pos); const modifiers = classElement.modifiers || emptyArray; const staticModifier = find(modifiers, isStaticModifier); + const abstractModifier = find(modifiers, isAbstractModifier); const accessibilityModifier = find(modifiers, m => isAccessibilityModifier(m.kind)); - const modifierPos = staticModifier ? staticModifier.end : + const modifierPos = abstractModifier ? abstractModifier.end : + staticModifier ? staticModifier.end : accessibilityModifier ? accessibilityModifier.end : classElement.decorators ? skipTrivia(sourceFile.text, classElement.decorators.end) : classElement.getStart(sourceFile); - const options = accessibilityModifier || staticModifier ? { prefix: " " } : { suffix: " " }; + const options = accessibilityModifier || staticModifier || abstractModifier ? { prefix: " " } : { suffix: " " }; changeTracker.insertModifierAt(sourceFile, modifierPos, SyntaxKind.OverrideKeyword, options); } diff --git a/tests/cases/fourslash/codeFixOverrideModifier12.ts b/tests/cases/fourslash/codeFixOverrideModifier12.ts index 60c673e739b..1f36a92761d 100644 --- a/tests/cases/fourslash/codeFixOverrideModifier12.ts +++ b/tests/cases/fourslash/codeFixOverrideModifier12.ts @@ -11,6 +11,6 @@ verify.codeFix({ description: "Add 'override' modifier", - newRangeContent: "override abstract bar() {}", + newRangeContent: "abstract override bar() {}", index: 0 })