Add JSDoc tag support for Signature Help

This commit is contained in:
Mine Yalcinalp Starks
2016-12-07 17:55:14 -08:00
parent bd0893a5f5
commit cf2bfc0a12
7 changed files with 59 additions and 32 deletions
+14
View File
@@ -1069,6 +1069,16 @@ namespace FourSlash {
assert.equal(ts.displayPartsToString(actualDocComment), docComment, this.assertionMessageAtLastKnownMarker("current signature help doc comment"));
}
public verifyCurrentSignatureHelpTags(tags: ts.JSDocTagInfo[]) {
const actualTags = this.getActiveSignatureHelpItem().tags;
assert.equal(actualTags.length, tags.length, this.assertionMessageAtLastKnownMarker("signature help tags"));
ts.zipWith(tags, actualTags, (expectedTag, actualTag) => {
assert.equal(expectedTag.name, actualTag.name);
assert.equal(expectedTag.text, actualTag.text, this.assertionMessageAtLastKnownMarker("signature help tag " + actualTag.name));
});
}
public verifySignatureHelpCount(expected: number) {
const help = this.languageService.getSignatureHelpItems(this.activeFile.fileName, this.currentCaretPosition);
const actual = help && help.items ? help.items.length : 0;
@@ -3270,6 +3280,10 @@ namespace FourSlashInterface {
this.state.verifyCurrentSignatureHelpDocComment(docComment);
}
public currentSignatureHelpTagsAre(tags: ts.JSDocTagInfo[]) {
this.state.verifyCurrentSignatureHelpTags(tags);
}
public signatureHelpCountIs(expected: number) {
this.state.verifySignatureHelpCount(expected);
}
+5
View File
@@ -1600,6 +1600,11 @@ namespace ts.server.protocol {
* The signature's documentation
*/
documentation: SymbolDisplayPart[];
/**
* The signature's JSDoc tags
*/
tags: JSDocTagInfo[];
}
/**
+2 -1
View File
@@ -590,7 +590,8 @@ namespace ts.SignatureHelp {
suffixDisplayParts,
separatorDisplayParts: [punctuationPart(SyntaxKind.CommaToken), spacePart()],
parameters: signatureHelpParameters,
documentation: candidateSignature.getDocumentationComment()
documentation: candidateSignature.getDocumentationComment(),
tags: candidateSignature.getJsDocTags()
};
});
+1
View File
@@ -539,6 +539,7 @@ namespace ts {
separatorDisplayParts: SymbolDisplayPart[];
parameters: SignatureHelpParameter[];
documentation: SymbolDisplayPart[];
tags: JSDocTagInfo[];
}
/**
@@ -75,6 +75,12 @@
]
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 902
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
@@ -191,6 +197,12 @@
]
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 918
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
@@ -262,6 +274,12 @@
]
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 933
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
@@ -328,6 +346,12 @@
"tags": []
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 948
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
+1
View File
@@ -192,6 +192,7 @@ declare namespace FourSlashInterface {
currentParameterSpanIs(parameter: string): void;
currentParameterHelpArgumentDocCommentIs(docComment: string): void;
currentSignatureHelpDocCommentIs(docComment: string): void;
currentSignatureHelpTagsAre(tags: ts.JSDocTagInfo[]): void;
signatureHelpCountIs(expected: number): void;
signatureHelpArgumentCountIs(expected: number): void;
signatureHelpCurrentArgumentListIsVariadic(expected: boolean);
+12 -31
View File
@@ -45,42 +45,23 @@
//// /** @mytag */
//// method5() {}
//// }
//// var foo = new /*1*/Foo(4);
//// /*2*/Foo./*3*/method1();
//// foo./*4*/method2();
//// foo./*5*/method3();
//// var foo = new /*1*/Foo(/*10*/4);
//// /*2*/Foo./*3*/method1(/*11*/);
//// foo./*4*/method2(/*12*/);
//// foo./*5*/method3(/*13*/);
//// foo./*6*/method4();
//// foo./*7*/property1;
//// foo./*8*/property2;
//// foo./*9*/method5();
goTo.marker("1");
verify.baselineQuickInfo();
goTo.marker("2");
verify.baselineQuickInfo();
goTo.marker("3");
verify.baselineQuickInfo();
goTo.marker("4");
verify.baselineQuickInfo();
goTo.marker("5");
verify.baselineQuickInfo();
goTo.marker("6");
verify.baselineQuickInfo();
goTo.marker("7");
verify.baselineQuickInfo();
goTo.marker("8");
verify.baselineQuickInfo();
goTo.marker("9");
verify.baselineQuickInfo();
// /**
// * @param foo
// * Does
// * stuff!
// * @returns void
// */
// function example(foo) {
// }
// example("asdf");
goTo.marker("10");
verify.currentSignatureHelpTagsAre([{name: "myjsdoctag", text:"this is a comment"}])
goTo.marker("11");
verify.currentSignatureHelpTagsAre([{name: "mytag", text:"comment1 comment2"}])
goTo.marker("12");
verify.currentSignatureHelpTagsAre([{name: "mytag", text:""}])
goTo.marker("13");
verify.currentSignatureHelpTagsAre([])