package fourslash_test import ( "testing" "efprojects.com/kitten-ipc/kitcom/internal/tsgo/fourslash" "efprojects.com/kitten-ipc/kitcom/internal/tsgo/testutil" ) func TestCompletionDetailsOfContextSensitiveParameterNoCrash(t *testing.T) { t.Parallel() defer testutil.RecoverAndFail(t, "Panic on fourslash test") const content = `// @strict: true type __ = never; interface CurriedFunction1 { (): CurriedFunction1; (t1: T1): R; } interface CurriedFunction2 { (): CurriedFunction2; (t1: T1): CurriedFunction1; (t1: __, t2: T2): CurriedFunction1; (t1: T1, t2: T2): R; } interface CurriedFunction3 { (): CurriedFunction3; (t1: T1): CurriedFunction2; (t1: __, t2: T2): CurriedFunction2; (t1: T1, t2: T2): CurriedFunction1; (t1: __, t2: __, t3: T3): CurriedFunction2; (t1: T1, t2: __, t3: T3): CurriedFunction1; (t1: __, t2: T2, t3: T3): CurriedFunction1; (t1: T1, t2: T2, t3: T3): R; } interface CurriedFunction4 { (): CurriedFunction4; (t1: T1): CurriedFunction3; (t1: __, t2: T2): CurriedFunction3; (t1: T1, t2: T2): CurriedFunction2; (t1: __, t2: __, t3: T3): CurriedFunction3; (t1: __, t2: __, t3: T3): CurriedFunction2; (t1: __, t2: T2, t3: T3): CurriedFunction2; (t1: T1, t2: T2, t3: T3): CurriedFunction1; (t1: __, t2: __, t3: __, t4: T4): CurriedFunction3; (t1: T1, t2: __, t3: __, t4: T4): CurriedFunction2; (t1: __, t2: T2, t3: __, t4: T4): CurriedFunction2; (t1: __, t2: __, t3: T3, t4: T4): CurriedFunction2; (t1: T1, t2: T2, t3: __, t4: T4): CurriedFunction1; (t1: T1, t2: __, t3: T3, t4: T4): CurriedFunction1; (t1: __, t2: T2, t3: T3, t4: T4): CurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4): R; } declare var curry: { (func: (t1: T1) => R, arity?: number): CurriedFunction1; (func: (t1: T1, t2: T2) => R, arity?: number): CurriedFunction2; (func: (t1: T1, t2: T2, t3: T3) => R, arity?: number): CurriedFunction3; (func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arity?: number): CurriedFunction4; (func: (...args: any[]) => any, arity?: number): (...args: any[]) => any; placeholder: __; }; export type StylingFunction = ( keys: (string | false | undefined) | (string | false | undefined)[], ...rest: unknown[] ) => object; declare const getStylingByKeys: ( mergedStyling: object, keys: (string | false | undefined) | (string | false | undefined)[], ...args: unknown[] ) => object; declare var mergedStyling: object; export const createStyling: CurriedFunction3< (base16Theme: object) => unknown, object | undefined, object | undefined, StylingFunction > = curry< (base16Theme: object) => unknown, object | undefined, object | undefined, StylingFunction >( ( getStylingFromBase16: (base16Theme: object) => unknown, options: object = {}, themeOrStyling: object = {}, ...args ): StylingFunction => { return curry(getStylingByKeys, 2)(mergedStyling, .../**/args); }, 3 );` f := fourslash.NewFourslash(t, nil /*capabilities*/, content) f.VerifyBaselineHover(t) }