diff --git a/src/services/utilities.ts b/src/services/utilities.ts index c11c65d076dd6..ce0c15366be24 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 0000000000000..eb882e3829aea --- /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 + }] +});