mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Add JSDoc tag support for Signature Help
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -1600,6 +1600,11 @@ namespace ts.server.protocol {
|
||||
* The signature's documentation
|
||||
*/
|
||||
documentation: SymbolDisplayPart[];
|
||||
|
||||
/**
|
||||
* The signature's JSDoc tags
|
||||
*/
|
||||
tags: JSDocTagInfo[];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -590,7 +590,8 @@ namespace ts.SignatureHelp {
|
||||
suffixDisplayParts,
|
||||
separatorDisplayParts: [punctuationPart(SyntaxKind.CommaToken), spacePart()],
|
||||
parameters: signatureHelpParameters,
|
||||
documentation: candidateSignature.getDocumentationComment()
|
||||
documentation: candidateSignature.getDocumentationComment(),
|
||||
tags: candidateSignature.getJsDocTags()
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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([])
|
||||
|
||||
Reference in New Issue
Block a user