diff --git a/src/services/completions.ts b/src/services/completions.ts index f9fa8892e73..b75563e87ce 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -4607,9 +4607,9 @@ function getCompletionData( return isDeclarationName(contextToken) && !isShorthandPropertyAssignment(contextToken.parent) && !isJsxAttribute(contextToken.parent) - // Don't block completions if we're in `class C /**/` or `interface I /**/`, because we're *past* the end of the identifier and might want to complete `extends`. - // If `contextToken !== previousToken`, this is `class C ex/**/ or `interface I ex/**/``. - && !((isClassLike(contextToken.parent) || isInterfaceDeclaration(contextToken.parent)) && (contextToken !== previousToken || position > previousToken.end)); + // Don't block completions if we're in `class C /**/`, `interface I /**/` or `` , because we're *past* the end of the identifier and might want to complete `extends`. + // If `contextToken !== previousToken`, this is `class C ex/**/`, `interface I ex/**/` or ``. + && !((isClassLike(contextToken.parent) || isInterfaceDeclaration(contextToken.parent) || isTypeParameterDeclaration(contextToken.parent)) && (contextToken !== previousToken || position > previousToken.end)); } function isPreviousPropertyDeclarationTerminated(contextToken: Node, position: number) { diff --git a/tests/cases/fourslash/extendsKeywordCompletion.ts b/tests/cases/fourslash/extendsKeywordCompletion1.ts similarity index 100% rename from tests/cases/fourslash/extendsKeywordCompletion.ts rename to tests/cases/fourslash/extendsKeywordCompletion1.ts diff --git a/tests/cases/fourslash/extendsKeywordCompletion2.ts b/tests/cases/fourslash/extendsKeywordCompletion2.ts new file mode 100644 index 00000000000..caaa28d119b --- /dev/null +++ b/tests/cases/fourslash/extendsKeywordCompletion2.ts @@ -0,0 +1,9 @@ +/// + +////function f1() {} +////function f2() {} + +verify.completions({ + marker: ["1", "2"], + includes: [{ name: "extends", sortText: completion.SortText.GlobalsOrKeywords }] +});