Merge pull request #6851 from RyanCavanaugh/fix6814

Allow parsing TS-style generics in JSDoc
This commit is contained in:
Ryan Cavanaugh
2016-02-04 15:37:53 -08:00
2 changed files with 47 additions and 7 deletions

View File

@@ -5750,16 +5750,22 @@ namespace ts {
const result = <JSDocTypeReference>createNode(SyntaxKind.JSDocTypeReference);
result.name = parseSimplePropertyName();
while (parseOptional(SyntaxKind.DotToken)) {
if (token === SyntaxKind.LessThanToken) {
result.typeArguments = parseTypeArguments();
break;
}
else {
result.name = parseQualifiedName(result.name);
if (token === SyntaxKind.LessThanToken) {
result.typeArguments = parseTypeArguments();
}
else {
while (parseOptional(SyntaxKind.DotToken)) {
if (token === SyntaxKind.LessThanToken) {
result.typeArguments = parseTypeArguments();
break;
}
else {
result.name = parseQualifiedName(result.name);
}
}
}
return finishNode(result);
}

View File

@@ -0,0 +1,34 @@
///<reference path="fourslash.ts" />
// @allowNonTsExtensions: true
// @Filename: ref.d.ts
//// namespace Thing {
//// export interface Thung {
//// a: number;
//// ]
//// ]
// @Filename: Foo.js
////
//// /** @type {Array<number>} */
//// var v;
//// v[0]./*1*/
////
//// /** @type {{x: Array<Array<number>>}} */
//// var w;
//// w.x[0][0]./*2*/
////
//// /** @type {Array<Thing.Thung>} */
//// var x;
//// x[0].a./*3*/
goTo.marker('1');
verify.memberListContains("toFixed", /*displayText:*/ undefined, /*documentation*/ undefined, "method");
goTo.marker('2');
verify.memberListContains("toFixed", /*displayText:*/ undefined, /*documentation*/ undefined, "method");
goTo.marker('3');
verify.memberListContains("toFixed", /*displayText:*/ undefined, /*documentation*/ undefined, "method");