1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
=== tests/cases/compiler/typeInferenceCacheInvalidation.ts ===
// Repro from #32230
type Callback<TFoo, TBar> = (foo: TFoo, bar: TBar) => any
>Callback : Callback<TFoo, TBar>
>foo : TFoo
>bar : TBar
declare function example<TFoo, TBar, TCallback extends Callback<TFoo, TBar>>(
>example : <TFoo, TBar, TCallback extends Callback<TFoo, TBar>>(foo: TFoo, callback: TCallback, bar: TBar) => TCallback
foo: TFoo,
>foo : TFoo
callback: TCallback,
>callback : TCallback
bar: TBar,
>bar : TBar
): TCallback
example(42, (foo, bar) => ({
>example(42, (foo, bar) => ({ t: () => { let s: string = bar; }}), '42') : (foo: number, bar: string) => { t: () => void; }
>example : <TFoo, TBar, TCallback extends Callback<TFoo, TBar>>(foo: TFoo, callback: TCallback, bar: TBar) => TCallback
>42 : 42
>(foo, bar) => ({ t: () => { let s: string = bar; }}) : (foo: number, bar: string) => { t: () => void; }
>foo : number
>bar : string
>({ t: () => { let s: string = bar; }}) : { t: () => void; }
>{ t: () => { let s: string = bar; }} : { t: () => void; }
t: () => {
>t : () => void
>() => { let s: string = bar; } : () => void
let s: string = bar;
>s : string
>bar : string
}
}), '42');
>'42' : "42"
example(42, (foo, bar) => ({
>example(42, (foo, bar) => ({ t() { let s: string = bar; }}), '42') : (foo: number, bar: string) => { t(): void; }
>example : <TFoo, TBar, TCallback extends Callback<TFoo, TBar>>(foo: TFoo, callback: TCallback, bar: TBar) => TCallback
>42 : 42
>(foo, bar) => ({ t() { let s: string = bar; }}) : (foo: number, bar: string) => { t(): void; }
>foo : number
>bar : string
>({ t() { let s: string = bar; }}) : { t(): void; }
>{ t() { let s: string = bar; }} : { t(): void; }
t() {
>t : () => void
let s: string = bar;
>s : string
>bar : string
}
}), '42');
>'42' : "42"
|