218 lines
5.5 KiB
Go
218 lines
5.5 KiB
Go
package fourslash_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/fourslash"
|
|
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/testutil"
|
|
)
|
|
|
|
func TestQuickInfoCommentsCommentParsing(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
|
|
const content = `/// This is simple /// comments
|
|
function simple() {
|
|
}
|
|
|
|
sim/*1q*/ple( );
|
|
|
|
/// multiLine /// Comments
|
|
/// This is example of multiline /// comments
|
|
/// Another multiLine
|
|
function multiLine() {
|
|
}
|
|
mul/*2q*/tiLine( );
|
|
|
|
/** this is eg of single line jsdoc style comment */
|
|
function jsDocSingleLine() {
|
|
}
|
|
jsDoc/*3q*/SingleLine();
|
|
|
|
|
|
/** this is multiple line jsdoc stule comment
|
|
*New line1
|
|
*New Line2*/
|
|
function jsDocMultiLine() {
|
|
}
|
|
jsDocM/*4q*/ultiLine();
|
|
|
|
/** multiple line jsdoc comments no longer merge
|
|
*New line1
|
|
*New Line2*/
|
|
/** Shoul mege this line as well
|
|
* and this too*/ /** Another this one too*/
|
|
function jsDocMultiLineMerge() {
|
|
}
|
|
jsDocMu/*5q*/ltiLineMerge();
|
|
|
|
|
|
/// Triple slash comment
|
|
/** jsdoc comment */
|
|
function jsDocMixedComments1() {
|
|
}
|
|
jsDocMix/*6q*/edComments1();
|
|
|
|
/// Triple slash comment
|
|
/** jsdoc comment */ /** another jsDocComment*/
|
|
function jsDocMixedComments2() {
|
|
}
|
|
jsDocMi/*7q*/xedComments2();
|
|
|
|
/** jsdoc comment */ /*** triplestar jsDocComment*/
|
|
/// Triple slash comment
|
|
function jsDocMixedComments3() {
|
|
}
|
|
jsDocMixe/*8q*/dComments3();
|
|
|
|
/** jsdoc comment */ /** another jsDocComment*/
|
|
/// Triple slash comment
|
|
/// Triple slash comment 2
|
|
function jsDocMixedComments4() {
|
|
}
|
|
jsDocMixed/*9q*/Comments4();
|
|
|
|
/// Triple slash comment 1
|
|
/** jsdoc comment */ /** another jsDocComment*/
|
|
/// Triple slash comment
|
|
/// Triple slash comment 2
|
|
function jsDocMixedComments5() {
|
|
}
|
|
jsDocM/*10q*/ixedComments5();
|
|
|
|
/** another jsDocComment*/
|
|
/// Triple slash comment 1
|
|
/// Triple slash comment
|
|
/// Triple slash comment 2
|
|
/** jsdoc comment */
|
|
function jsDocMixedComments6() {
|
|
}
|
|
jsDocMix/*11q*/edComments6();
|
|
|
|
// This shoulnot be help comment
|
|
function noHelpComment1() {
|
|
}
|
|
noHel/*12q*/pComment1();
|
|
|
|
/* This shoulnot be help comment */
|
|
function noHelpComment2() {
|
|
}
|
|
noHelpC/*13q*/omment2();
|
|
|
|
function noHelpComment3() {
|
|
}
|
|
noHelpC/*14q*/omment3();
|
|
/** Adds two integers and returns the result
|
|
* @param {number} a first number
|
|
* @param b second number
|
|
*/
|
|
function sum(/*16aq*/a: number, /*17aq*/b: number) {
|
|
return a + b;
|
|
}
|
|
s/*16q*/um(10, 20);
|
|
/** This is multiplication function
|
|
* @param
|
|
* @param a first number
|
|
* @param b
|
|
* @param c {
|
|
@param d @anotherTag
|
|
* @param e LastParam @anotherTag*/
|
|
function multiply(/*19aq*/a: number, /*20aq*/b: number, /*21aq*/c?: number, /*22aq*/d?, /*23aq*/e?) {
|
|
}
|
|
mult/*19q*/iply(10, 20, 30, 40, 50);
|
|
/** fn f1 with number
|
|
* @param { string} b about b
|
|
*/
|
|
function f1(/*25aq*/a: number);
|
|
function f1(/*26aq*/b: string);
|
|
/**@param opt optional parameter*/
|
|
function f1(aOrb, opt?) {
|
|
return aOrb;
|
|
}
|
|
f/*25q*/1(10);
|
|
f/*26q*/1("hello");
|
|
|
|
/** This is subtract function
|
|
@param { a
|
|
*@param { number | } b this is about b
|
|
@param { { () => string; } } c this is optional param c
|
|
@param { { () => string; } d this is optional param d
|
|
@param { { () => string; } } e this is optional param e
|
|
@param { { { () => string; } } f this is optional param f
|
|
*/
|
|
function subtract(/*28aq*/a: number, /*29aq*/b: number, /*30aq*/c?: () => string, /*31aq*/d?: () => string, /*32aq*/e?: () => string, /*33aq*/f?: () => string) {
|
|
}
|
|
subt/*28q*/ract(10, 20, null, null, null, null);
|
|
/** this is square function
|
|
@paramTag { number } a this is input number of paramTag
|
|
@param { number } a this is input number
|
|
@returnType { number } it is return type
|
|
*/
|
|
function square(/*34aq*/a: number) {
|
|
return a * a;
|
|
}
|
|
squ/*34q*/are(10);
|
|
/** this is divide function
|
|
@param { number} a this is a
|
|
@paramTag { number } g this is optional param g
|
|
@param { number} b this is b
|
|
*/
|
|
function divide(/*35aq*/a: number, /*36aq*/b: number) {
|
|
}
|
|
div/*35q*/ide(10, 20);
|
|
/**
|
|
Function returns string concat of foo and bar
|
|
@param {string} foo is string
|
|
@param {string} bar is second string
|
|
*/
|
|
function fooBar(/*37aq*/foo: string, /*38aq*/bar: string) {
|
|
return foo + bar;
|
|
}
|
|
fo/*37q*/oBar("foo","bar");
|
|
/** This is a comment */
|
|
var x;
|
|
/**
|
|
* This is a comment
|
|
*/
|
|
var y;
|
|
/** this is jsdoc style function with param tag as well as inline parameter help
|
|
*@param a it is first parameter
|
|
*@param c it is third parameter
|
|
*/
|
|
function jsDocParamTest(/** this is inline comment for a *//*40aq*/a: number, /** this is inline comment for b*/ /*41aq*/b: number, /*42aq*/c: number, /*43aq*/d: number) {
|
|
return a + b + c + d;
|
|
}
|
|
jsD/*40q*/ocParamTest(30, 40, 50, 60);
|
|
/** This is function comment
|
|
* And properly aligned comment
|
|
*/
|
|
function jsDocCommentAlignmentTest1() {
|
|
}
|
|
jsDocCom/*45q*/mentAlignmentTest1();
|
|
/** This is function comment
|
|
* And aligned with 4 space char margin
|
|
*/
|
|
function jsDocCommentAlignmentTest2() {
|
|
}
|
|
jsDocComme/*46q*/ntAlignmentTest2();
|
|
/** This is function comment
|
|
* And aligned with 4 space char margin
|
|
* @param {string} a this is info about a
|
|
* spanning on two lines and aligned perfectly
|
|
* @param b this is info about b
|
|
* spanning on two lines and aligned perfectly
|
|
* spanning one more line alined perfectly
|
|
* spanning another line with more margin
|
|
* @param c this is info about b
|
|
* not aligned text about parameter will eat only one space
|
|
*/
|
|
function jsDocCommentAlignmentTest3(/*47aq*/a: string, /*48aq*/b, /*49aq*/c) {
|
|
}
|
|
jsDocComme/*47q*/ntAlignmentTest3("hello",1, 2);
|
|
/**/
|
|
class NoQuic/*50q*/kInfoClass {
|
|
}`
|
|
f := fourslash.NewFourslash(t, nil /*capabilities*/, content)
|
|
f.VerifyBaselineHover(t)
|
|
}
|