diff --git a/src/services/completions.ts b/src/services/completions.ts
index e8ff98ea7a0db..bbcf9d4178b7d 100644
--- a/src/services/completions.ts
+++ b/src/services/completions.ts
@@ -228,6 +228,7 @@ import {
isTypeOfExpression,
isTypeOnlyImportDeclaration,
isTypeOnlyImportOrExportDeclaration,
+ isTypeParameterDeclaration,
isTypeReferenceType,
isValidTypeOnlyAliasUseSite,
isVariableDeclaration,
@@ -4264,9 +4265,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 0000000000000..caaa28d119b5f
--- /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 }]
+});