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 }] +});