Skip to content

Commit 68befc0

Browse files
committed
Merge pull request microsoft#6851 from RyanCavanaugh/fix6814
Allow parsing TS-style generics in JSDoc
2 parents 155e699 + e347c37 commit 68befc0

2 files changed

Lines changed: 47 additions & 7 deletions

File tree

src/compiler/parser.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5750,16 +5750,22 @@ namespace ts {
57505750
const result = <JSDocTypeReference>createNode(SyntaxKind.JSDocTypeReference);
57515751
result.name = parseSimplePropertyName();
57525752

5753-
while (parseOptional(SyntaxKind.DotToken)) {
5754-
if (token === SyntaxKind.LessThanToken) {
5755-
result.typeArguments = parseTypeArguments();
5756-
break;
5757-
}
5758-
else {
5759-
result.name = parseQualifiedName(result.name);
5753+
if (token === SyntaxKind.LessThanToken) {
5754+
result.typeArguments = parseTypeArguments();
5755+
}
5756+
else {
5757+
while (parseOptional(SyntaxKind.DotToken)) {
5758+
if (token === SyntaxKind.LessThanToken) {
5759+
result.typeArguments = parseTypeArguments();
5760+
break;
5761+
}
5762+
else {
5763+
result.name = parseQualifiedName(result.name);
5764+
}
57605765
}
57615766
}
57625767

5768+
57635769
return finishNode(result);
57645770
}
57655771

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
///<reference path="fourslash.ts" />
2+
3+
// @allowNonTsExtensions: true
4+
// @Filename: ref.d.ts
5+
//// namespace Thing {
6+
//// export interface Thung {
7+
//// a: number;
8+
//// ]
9+
//// ]
10+
11+
12+
// @Filename: Foo.js
13+
////
14+
//// /** @type {Array<number>} */
15+
//// var v;
16+
//// v[0]./*1*/
17+
////
18+
//// /** @type {{x: Array<Array<number>>}} */
19+
//// var w;
20+
//// w.x[0][0]./*2*/
21+
////
22+
//// /** @type {Array<Thing.Thung>} */
23+
//// var x;
24+
//// x[0].a./*3*/
25+
26+
27+
goTo.marker('1');
28+
verify.memberListContains("toFixed", /*displayText:*/ undefined, /*documentation*/ undefined, "method");
29+
30+
goTo.marker('2');
31+
verify.memberListContains("toFixed", /*displayText:*/ undefined, /*documentation*/ undefined, "method");
32+
33+
goTo.marker('3');
34+
verify.memberListContains("toFixed", /*displayText:*/ undefined, /*documentation*/ undefined, "method");

0 commit comments

Comments
 (0)