From 7f4e1b699a05e60977805bafef68754b653439f4 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 5 Aug 2020 10:09:45 -0700 Subject: [PATCH] Find tagless JSDoc as preceding token (#39912) --- src/services/utilities.ts | 4 ++++ tests/cases/fourslash/completionsAfterJSDoc.ts | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 tests/cases/fourslash/completionsAfterJSDoc.ts diff --git a/src/services/utilities.ts b/src/services/utilities.ts index c11c65d076d..ce0c15366be 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -1217,6 +1217,10 @@ namespace ts { } const children = n.getChildren(sourceFile); + if (children.length === 0) { + return n; + } + const candidate = findRightmostChildNodeWithTokens(children, /*exclusiveStartPosition*/ children.length, sourceFile); return candidate && findRightmostToken(candidate, sourceFile); } diff --git a/tests/cases/fourslash/completionsAfterJSDoc.ts b/tests/cases/fourslash/completionsAfterJSDoc.ts new file mode 100644 index 00000000000..eb882e3829a --- /dev/null +++ b/tests/cases/fourslash/completionsAfterJSDoc.ts @@ -0,0 +1,17 @@ +/// + +////export interface Foo { +//// /** JSDoc */ +//// /**/foo(): void; +////} + +// Should not crash, #35632 +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [{ + name: "readonly", + kind: "keyword", + sortText: completion.SortText.GlobalsOrKeywords + }] +});