// Code generated by convertFourslash; DO NOT EDIT. // To modify this test, run "npm run makemanual quickInfoGenericCombinators2" package fourslash_test import ( "testing" "github.com/microsoft/typescript-go/internal/fourslash" "github.com/microsoft/typescript-go/internal/testutil" ) func TestQuickInfoGenericCombinators2(t *testing.T) { fourslash.SkipIfFailing(t) t.Parallel() defer testutil.RecoverAndFail(t, "Panic on fourslash test") const content = `interface Collection { length: number; add(x: T, y: U): void ; remove(x: T, y: U): boolean; } interface Combinators { map(c: Collection, f: (x: T, y: U) => V): Collection; map(c: Collection, f: (x: T, y: U) => any): Collection; } class A { foo(): T { return null; } } class B { foo(x: T): T { return null; } } var c1: Collection; var c2: Collection; var c3: Collection, string>; var c4: Collection; var c5: Collection>; var _: Combinators; // param help on open paren for arg 2 should show 'number' not T or 'any' // x should be contextually typed to number var rf1 = (x: number, y: string) => { return x.toFixed() }; var rf2 = (x: Collection, y: string) => { return x.length }; var rf3 = (x: number, y: A) => { return y.foo() }; var /*9*/r1a = _.map/*1c*/(c2, (/*1a*/x, /*1b*/y) => { return x.toFixed() }); var /*10*/r1b = _.map(c2, rf1); var /*11*/r2a = _.map(c3, (/*2a*/x, /*2b*/y) => { return x.length }); var /*12*/r2b = _.map(c3, rf2); var /*13*/r3a = _.map(c4, (/*3a*/x, /*3b*/y) => { return y.foo() }); var /*14*/r3b = _.map(c4, rf3); var /*15*/r4a = _.map(c5, (/*4a*/x, /*4b*/y) => { return y.foo() }); var /*17*/r5a = _.map(c2, /*17error1*/(/*5a*/x, /*5b*/y) => { return x.toFixed() }/*17error2*/); var rf1b = (x: number, y: string) => { return new Date() }; var /*18*/r5b = _.map(c2, rf1b); var /*19*/r6a = _.map, string, Date>(c3, (/*6a*/x,/*6b*/y) => { return new Date(); }); var rf2b = (x: Collection, y: string) => { return new Date(); }; var /*20*/r6b = _.map, string, Date>(c3, rf2b); var /*21*/r7a = _.map(c4, (/*7a*/x,/*7b*/y) => { return y.foo() }); var /*22*/r7b = _.map(c4, /*22error1*/rf3/*22error2*/); var /*23*/r8a = _.map(c5, (/*8a*/x,/*8b*/y) => { return y.foo() }); ` f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content) defer done() f.VerifyQuickInfoAt(t, "2a", "(parameter) x: Collection", "") f.VerifyQuickInfoAt(t, "2b", "(parameter) y: string", "") f.VerifyQuickInfoAt(t, "3a", "(parameter) x: number", "") f.VerifyQuickInfoAt(t, "3b", "(parameter) y: A", "") f.VerifyQuickInfoAt(t, "4a", "(parameter) x: number", "") f.VerifyQuickInfoAt(t, "4b", "(parameter) y: B", "") f.VerifyQuickInfoAt(t, "5a", "(parameter) x: number", "") f.VerifyQuickInfoAt(t, "5b", "(parameter) y: string", "") f.VerifyQuickInfoAt(t, "6a", "(parameter) x: Collection", "") f.VerifyQuickInfoAt(t, "6b", "(parameter) y: string", "") f.VerifyQuickInfoAt(t, "7a", "(parameter) x: number", "") f.VerifyQuickInfoAt(t, "7b", "(parameter) y: A", "") f.VerifyQuickInfoAt(t, "8a", "(parameter) x: number", "") f.VerifyQuickInfoAt(t, "8b", "(parameter) y: any", "") f.VerifyQuickInfoAt(t, "9", "var r1a: Collection", "") f.VerifyQuickInfoAt(t, "10", "var r1b: Collection", "") f.VerifyQuickInfoAt(t, "11", "var r2a: Collection, number>", "") f.VerifyQuickInfoAt(t, "12", "var r2b: Collection, number>", "") f.VerifyQuickInfoAt(t, "13", "var r3a: Collection", "") f.VerifyQuickInfoAt(t, "14", "var r3b: Collection", "") f.VerifyQuickInfoAt(t, "15", "var r4a: Collection", "") f.VerifyQuickInfoAt(t, "17", "var r5a: Collection", "") f.VerifyQuickInfoAt(t, "18", "var r5b: Collection", "") f.VerifyQuickInfoAt(t, "19", "var r6a: Collection, Date>", "") f.VerifyQuickInfoAt(t, "20", "var r6b: Collection, Date>", "") f.VerifyQuickInfoAt(t, "21", "var r7a: Collection", "") f.VerifyQuickInfoAt(t, "22", "var r7b: Collection", "") f.VerifyQuickInfoAt(t, "23", "var r8a: Collection", "") f.VerifyErrorExistsBetweenMarkers(t, "error1", "error2") f.VerifyErrorExistsBetweenMarkers(t, "17error1", "17error2") f.VerifyErrorExistsBetweenMarkers(t, "22error1", "22error2") }