feat(47977): show completion in jsdoc extends/implements tags (#51028)

This commit is contained in:
Oleksandr T
2022-12-09 03:10:00 +02:00
committed by GitHub
parent 8f2ee38b52
commit e087992134
3 changed files with 23 additions and 1 deletions

View File

@@ -56,6 +56,7 @@ import {
every,
ExportKind,
Expression,
ExpressionWithTypeArguments,
factory,
filter,
find,
@@ -167,6 +168,8 @@ import {
isInString,
isIntersectionTypeNode,
isJSDoc,
isJSDocAugmentsTag,
isJSDocImplementsTag,
isJSDocParameterTag,
isJSDocTag,
isJSDocTemplateTag,
@@ -2967,11 +2970,14 @@ function getCompletionData(
}
}
function tryGetTypeExpressionFromTag(tag: JSDocTag): JSDocTypeExpression | undefined {
function tryGetTypeExpressionFromTag(tag: JSDocTag): JSDocTypeExpression | ExpressionWithTypeArguments | undefined {
if (isTagWithTypeExpression(tag)) {
const typeExpression = isJSDocTemplateTag(tag) ? tag.constraint : tag.typeExpression;
return typeExpression && typeExpression.kind === SyntaxKind.JSDocTypeExpression ? typeExpression : undefined;
}
if (isJSDocAugmentsTag(tag) || isJSDocImplementsTag(tag)) {
return tag.class;
}
return undefined;
}

View File

@@ -0,0 +1,8 @@
///<reference path="fourslash.ts" />
/////** @extends {/**/} */
////class A {}
verify.completions(
{ marker: "", exact: completion.globalTypesPlus(["A"]) },
);

View File

@@ -0,0 +1,8 @@
///<reference path="fourslash.ts" />
/////** @implements {/**/} */
////class A {}
verify.completions(
{ marker: "", exact: completion.globalTypesPlus(["A"]) },
);