From 39cd6a395a9ef951c9bc0954772beea76e1b264b Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Tue, 30 Jun 2020 09:36:40 -0700 Subject: [PATCH] Fix crash on completion in jsdoc namepath contextToken may be undefined, so the isAssertionExpression call in filterGlobalCompletion needs to check for undefined. --- src/services/completions.ts | 6 +----- tests/cases/fourslash/completionJSDocNamePath.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 tests/cases/fourslash/completionJSDocNamePath.ts diff --git a/src/services/completions.ts b/src/services/completions.ts index 989aff628bdf8..88cee321e1023 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -1464,7 +1464,7 @@ namespace ts.Completions { function filterGlobalCompletion(symbols: Symbol[]): void { const isTypeOnly = isTypeOnlyCompletion(); if (isTypeOnly) { - keywordFilters = isTypeAssertion() + keywordFilters = contextToken && isAssertionExpression(contextToken.parent) ? KeywordCompletionFilters.TypeAssertionKeywords : KeywordCompletionFilters.TypeKeywords; } @@ -1494,10 +1494,6 @@ namespace ts.Completions { }); } - function isTypeAssertion(): boolean { - return isAssertionExpression(contextToken.parent); - } - function isTypeOnlyCompletion(): boolean { return insideJsDocTagTypeExpression || !isContextTokenValueLocation(contextToken) && diff --git a/tests/cases/fourslash/completionJSDocNamePath.ts b/tests/cases/fourslash/completionJSDocNamePath.ts new file mode 100644 index 0000000000000..e15f70eaa472d --- /dev/null +++ b/tests/cases/fourslash/completionJSDocNamePath.ts @@ -0,0 +1,15 @@ +// @noLib: true + +/// + +// fix crash from #38407 + +//// /** +//// * @returns {modu/*1*/le:ControlFlow} +//// */ +//// export function cargo() { +//// } + +goTo.marker('1'); +verify.completions({ marker: "1", excludes: ["module", "ControlFlow"] }); +