diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 254dbf5753248..3c6217180981a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1868,7 +1868,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const nodeLinks = getNodeLinks(node); cachedResolvedSignatures.push([nodeLinks, nodeLinks.resolvedSignature] as const); nodeLinks.resolvedSignature = undefined; - if (isFunctionLike(node)) { + if (isFunctionExpressionOrArrowFunction(node)) { const symbolLinks = getSymbolLinks(getSymbolOfDeclaration(node)); const type = symbolLinks.type; cachedTypes.push([symbolLinks, type] as const); diff --git a/src/compiler/utilitiesPublic.ts b/src/compiler/utilitiesPublic.ts index 98830e1a73961..688ef16272039 100644 --- a/src/compiler/utilitiesPublic.ts +++ b/src/compiler/utilitiesPublic.ts @@ -5,6 +5,7 @@ import { ArrayBindingElement, ArrayBindingOrAssignmentElement, ArrayBindingOrAssignmentPattern, + ArrowFunction, AssertionExpression, AssignmentDeclarationKind, AssignmentPattern, @@ -64,6 +65,7 @@ import { ForInitializer, ForInOrOfStatement, FunctionBody, + FunctionExpression, FunctionLikeDeclaration, FunctionTypeNode, GeneratedIdentifier, @@ -119,6 +121,7 @@ import { isExportSpecifier, isFunctionBlock, isFunctionExpression, + isFunctionExpressionOrArrowFunction, isFunctionTypeNode, isIdentifier, isImportSpecifier, @@ -1928,8 +1931,8 @@ export function isPropertyAccessOrQualifiedName(node: Node): node is PropertyAcc } /** @internal */ -export function isCallLikeOrFunctionLikeExpression(node: Node): node is CallLikeExpression | SignatureDeclaration { - return isCallLikeExpression(node) || isFunctionLike(node); +export function isCallLikeOrFunctionLikeExpression(node: Node): node is CallLikeExpression | FunctionExpression | ArrowFunction { + return isCallLikeExpression(node) || isFunctionExpressionOrArrowFunction(node); } export function isCallLikeExpression(node: Node): node is CallLikeExpression { diff --git a/tests/cases/fourslash/jsDocFunctionTypeCompletionsNoCrash.ts b/tests/cases/fourslash/jsDocFunctionTypeCompletionsNoCrash.ts new file mode 100644 index 0000000000000..316cc027754d8 --- /dev/null +++ b/tests/cases/fourslash/jsDocFunctionTypeCompletionsNoCrash.ts @@ -0,0 +1,13 @@ +/// + +//// /** +//// * @returns {function/**/(): string} +//// */ +//// function updateCalendarEvent() { +//// return ""; +//// } + +verify.completions({ + marker: "", + exact: completion.globalTypes +});