// Code generated by convertFourslash; DO NOT EDIT. // To modify this test, run "npm run makemanual issue57585-2" package fourslash_test import ( "testing" "github.com/microsoft/typescript-go/internal/fourslash" "github.com/microsoft/typescript-go/internal/testutil" ) func TestIssue57585_2(t *testing.T) { fourslash.SkipIfFailing(t) t.Parallel() defer testutil.RecoverAndFail(t, "Panic on fourslash test") const content = `// @strict: true // @target: esnext // @lib: esnext declare const EffectTypeId: unique symbol; type Covariant = (_: never) => A; interface VarianceStruct { readonly _V: string; readonly _A: Covariant; readonly _E: Covariant; readonly _R: Covariant; } interface Variance { readonly [EffectTypeId]: VarianceStruct; } type Success> = [T] extends [ Effect, ] ? _A : never; declare const YieldWrapTypeId: unique symbol; class YieldWrap { readonly #value: T; constructor(value: T) { this.#value = value; } [YieldWrapTypeId](): T { return this.#value; } } interface EffectGenerator> { next(...args: ReadonlyArray): IteratorResult, Success>; } interface Effect extends Variance { [Symbol.iterator](): EffectGenerator>; } declare const gen: { >, AEff>( f: () => Generator, ): Effect< AEff, [Eff] extends [never] ? never : [Eff] extends [YieldWrap>] ? E : never, [Eff] extends [never] ? never : [Eff] extends [YieldWrap>] ? R : never >; }; declare const succeed: (value: A) => Effect; gen(function* () { const a = yield* succeed(1); const b/*1*/ = yield* succeed(2); return a + b; });` f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content) defer done() f.VerifyQuickInfoAt(t, "1", "const b: number", "") f.VerifyNonSuggestionDiagnostics(t, nil) }