diff --git a/src/services/completions.ts b/src/services/completions.ts index d8b774a9404ba..0e4659b705bbc 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -3505,8 +3505,9 @@ namespace ts.Completions { /** Get the corresponding JSDocTag node if the position is in a jsDoc comment */ function getJsDocTagAtPosition(node: Node, position: number): JSDocTag | undefined { - const jsdoc = findAncestor(node, isJSDoc); - return jsdoc && jsdoc.tags && (rangeContainsPosition(jsdoc, position) ? findLast(jsdoc.tags, tag => tag.pos < position) : undefined); + return findAncestor(node, n => + isJSDocTag(n) && rangeContainsPosition(n, position) ? true : + isJSDoc(n) ? "quit" : false) as JSDocTag | undefined; } export function getPropertiesForObjectExpression(contextualType: Type, completionsType: Type | undefined, obj: ObjectLiteralExpression | JsxAttributes, checker: TypeChecker): Symbol[] { diff --git a/tests/cases/fourslash/jsdocPropertyTagCompletion.ts b/tests/cases/fourslash/jsdocPropertyTagCompletion.ts new file mode 100644 index 0000000000000..903806471b071 --- /dev/null +++ b/tests/cases/fourslash/jsdocPropertyTagCompletion.ts @@ -0,0 +1,10 @@ +/// + +/////** +//// * @typedef {Object} Foo +//// * @property {/**/} +//// */ + +verify.completions( + { marker: "", exact: completion.globalTypes }, +);