From 5e94cf626bed2ebfebfb34d4fef2385877e139a6 Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 26 Jul 2018 08:56:24 -0700 Subject: [PATCH] Expand span of @typedef with properties to include the @typedef tag (#25950) --- src/compiler/parser.ts | 2 +- ...parsesCorrectly.typedefTagWithChildrenTags.json | 2 +- .../cases/fourslash/goToTypeDefinition_typedef.ts | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/goToTypeDefinition_typedef.ts diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 070e774d82f..4fd7f77978a 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -6835,7 +6835,7 @@ namespace ts { let child: JSDocTypeTag | JSDocPropertyTag | false; let jsdocTypeLiteral: JSDocTypeLiteral | undefined; let childTypeTag: JSDocTypeTag | undefined; - const start = scanner.getStartPos(); + const start = atToken.pos; while (child = tryParse(() => parseChildPropertyTag())) { if (!jsdocTypeLiteral) { jsdocTypeLiteral = createNode(SyntaxKind.JSDocTypeLiteral, start); diff --git a/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.typedefTagWithChildrenTags.json b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.typedefTagWithChildrenTags.json index cf523b71c99..6d2fb4ada2f 100644 --- a/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.typedefTagWithChildrenTags.json +++ b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.typedefTagWithChildrenTags.json @@ -32,7 +32,7 @@ }, "typeExpression": { "kind": "JSDocTypeLiteral", - "pos": 28, + "pos": 8, "end": 100, "jsDocPropertyTags": [ { diff --git a/tests/cases/fourslash/goToTypeDefinition_typedef.ts b/tests/cases/fourslash/goToTypeDefinition_typedef.ts new file mode 100644 index 00000000000..b6a9587d2f7 --- /dev/null +++ b/tests/cases/fourslash/goToTypeDefinition_typedef.ts @@ -0,0 +1,14 @@ +/// + +// @allowJs: true + +// @Filename: /a.js +/////** +//// * /*def*/@typedef {object} I +//// * @property {number} x +//// */ +//// +/////** @type {I} */ +////const /*ref*/i = { x: 0 }; + +verify.goToType("ref", "def");