70 lines
1.9 KiB
Go
70 lines
1.9 KiB
Go
package fourslash_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/microsoft/typescript-go/internal/fourslash"
|
|
"github.com/microsoft/typescript-go/internal/testutil"
|
|
)
|
|
|
|
// Tests for signature help with binding pattern parameters.
|
|
// This covers the crash fix for binding patterns and various combinations
|
|
// as requested in the issue.
|
|
func TestSignatureHelpBindingPattern(t *testing.T) {
|
|
t.Parallel()
|
|
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
|
|
const content = `
|
|
/**
|
|
* @param options An empty object binding pattern.
|
|
*/
|
|
function emptyObj({}) {}
|
|
emptyObj(/*emptyObj*/)
|
|
|
|
/**
|
|
* @param items An empty array binding pattern.
|
|
*/
|
|
function emptyArr([]) {}
|
|
emptyArr(/*emptyArr*/)
|
|
|
|
/**
|
|
* @param param An object with a and b properties.
|
|
*/
|
|
function nonEmptyObj({a, b}: {a: number, b: string}) {}
|
|
nonEmptyObj(/*nonEmptyObj*/)
|
|
|
|
/**
|
|
* @param tuple A tuple with two elements.
|
|
*/
|
|
function nonEmptyArr([x, y]: [number, string]) {}
|
|
nonEmptyArr(/*nonEmptyArr*/)
|
|
|
|
/**
|
|
* @param first The first number parameter.
|
|
* @param second An object with a and b properties.
|
|
*/
|
|
function idLeading(first: number, {a, b}: {a: number, b: string}) {}
|
|
idLeading(123/*idLeading*/, { a: 1, b: 2 }/*bindingTrailing*/)
|
|
|
|
/**
|
|
* @param first An object with a and b properties.
|
|
* @param last The last number parameter.
|
|
*/
|
|
function bindingLeading({a, b}: {a: number, b: string}, last: number) {}
|
|
bindingLeading(/*bindingLeading*/{ a: 1, b: 2 }, 123 /*idTrailing*/)
|
|
|
|
/**
|
|
* @param param1 {Object} The first parameter
|
|
* @param param1.a {number} Comment a
|
|
* @param param1.b {string} Comment b
|
|
* @param param2 {Object} The second parameter
|
|
* @param param2.c {boolean} Comment c
|
|
* @param param2.d {unknown} Comment d
|
|
*/
|
|
function multipleBindings({ a, b }, { c, d }) {}
|
|
multipleBindings({ a: 0, b: "" }/*firstObjParam*/, { c: true, d: "" }/*secondObjParam*/)
|
|
`
|
|
f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content)
|
|
defer done()
|
|
f.VerifyBaselineSignatureHelp(t)
|
|
}
|