Merge pull request #9621 from zhengbli/fixJSDocPropertyTag

fix the issue that @property types are not recoganized
This commit is contained in:
Zhengbo Li 2016-07-13 11:32:36 -07:00 committed by GitHub
commit 9eeb69dfbc
2 changed files with 32 additions and 5 deletions

View file

@ -3160,6 +3160,9 @@ namespace ts {
if (declaration.kind === SyntaxKind.ExportAssignment) {
return links.type = checkExpression((<ExportAssignment>declaration).expression);
}
if (declaration.flags & NodeFlags.JavaScriptFile && declaration.kind === SyntaxKind.JSDocPropertyTag && (<JSDocPropertyTag>declaration).typeExpression) {
return links.type = getTypeFromTypeNode((<JSDocPropertyTag>declaration).typeExpression.type);
}
// Handle variable, parameter or property
if (!pushTypeResolution(symbol, TypeSystemPropertyName.Type)) {
return unknownType;

View file

@ -32,16 +32,24 @@
//// var numberLike; numberLike./*numberLike*/
////
//// /** @type {Person} */
//// var p;p./*person*/
//// var p;p./*person*/;
//// p.personName./*personName*/;
//// p.personAge./*personAge*/;
////
//// /** @type {Animal} */
//// var a;a./*animal*/
//// var a;a./*animal*/;
//// a.animalName./*animalName*/;
//// a.animalAge./*animalAge*/;
////
//// /** @type {Cat} */
//// var c;c./*cat*/
//// var c;c./*cat*/;
//// c.catName./*catName*/;
//// c.catAge./*catAge*/;
////
//// /** @type {Dog} */
//// var d;d./*dog*/
//// var d;d./*dog*/;
//// d.dogName./*dogName*/;
//// d.dogAge./*dogAge*/;
goTo.marker('numberLike');
verify.memberListContains('charAt');
@ -50,15 +58,31 @@ verify.memberListContains('toExponential');
goTo.marker('person');
verify.memberListContains('personName');
verify.memberListContains('personAge');
goTo.marker('personName');
verify.memberListContains('charAt');
goTo.marker('personAge');
verify.memberListContains('toExponential');
goTo.marker('animal');
verify.memberListContains('animalName');
verify.memberListContains('animalAge');
goTo.marker('animalName');
verify.memberListContains('charAt');
goTo.marker('animalAge');
verify.memberListContains('toExponential');
goTo.marker('dog');
verify.memberListContains('dogName');
verify.memberListContains('dogAge');
goTo.marker('dogName');
verify.memberListContains('charAt');
goTo.marker('dogAge');
verify.memberListContains('toExponential');
goTo.marker('cat');
verify.memberListContains('catName');
verify.memberListContains('catAge');
verify.memberListContains('catAge');
goTo.marker('catName');
verify.memberListContains('charAt');
goTo.marker('catAge');
verify.memberListContains('toExponential');