diff --git a/tests/baselines/reference/inferTypes2.js b/tests/baselines/reference/inferTypes2.js new file mode 100644 index 00000000000..ad1074d9f6a --- /dev/null +++ b/tests/baselines/reference/inferTypes2.js @@ -0,0 +1,22 @@ +//// [inferTypes2.ts] +// Repro from #22755 + +export declare function foo(obj: T): T extends () => infer P ? P : never; +export function bar(obj: T) { + return foo(obj); +} + + +//// [inferTypes2.js] +"use strict"; +// Repro from #22755 +exports.__esModule = true; +function bar(obj) { + return foo(obj); +} +exports.bar = bar; + + +//// [inferTypes2.d.ts] +export declare function foo(obj: T): T extends () => infer P ? P : never; +export declare function bar(obj: T): T extends () => infer P ? P : never; diff --git a/tests/baselines/reference/inferTypes2.symbols b/tests/baselines/reference/inferTypes2.symbols new file mode 100644 index 00000000000..868736695bc --- /dev/null +++ b/tests/baselines/reference/inferTypes2.symbols @@ -0,0 +1,23 @@ +=== tests/cases/conformance/types/conditional/inferTypes2.ts === +// Repro from #22755 + +export declare function foo(obj: T): T extends () => infer P ? P : never; +>foo : Symbol(foo, Decl(inferTypes2.ts, 0, 0)) +>T : Symbol(T, Decl(inferTypes2.ts, 2, 28)) +>obj : Symbol(obj, Decl(inferTypes2.ts, 2, 31)) +>T : Symbol(T, Decl(inferTypes2.ts, 2, 28)) +>T : Symbol(T, Decl(inferTypes2.ts, 2, 28)) +>P : Symbol(P, Decl(inferTypes2.ts, 2, 61)) +>P : Symbol(P, Decl(inferTypes2.ts, 2, 61)) + +export function bar(obj: T) { +>bar : Symbol(bar, Decl(inferTypes2.ts, 2, 76)) +>T : Symbol(T, Decl(inferTypes2.ts, 3, 20)) +>obj : Symbol(obj, Decl(inferTypes2.ts, 3, 23)) +>T : Symbol(T, Decl(inferTypes2.ts, 3, 20)) + + return foo(obj); +>foo : Symbol(foo, Decl(inferTypes2.ts, 0, 0)) +>obj : Symbol(obj, Decl(inferTypes2.ts, 3, 23)) +} + diff --git a/tests/baselines/reference/inferTypes2.types b/tests/baselines/reference/inferTypes2.types new file mode 100644 index 00000000000..1fd3d7384af --- /dev/null +++ b/tests/baselines/reference/inferTypes2.types @@ -0,0 +1,24 @@ +=== tests/cases/conformance/types/conditional/inferTypes2.ts === +// Repro from #22755 + +export declare function foo(obj: T): T extends () => infer P ? P : never; +>foo : (obj: T) => T extends () => infer P ? P : never +>T : T +>obj : T +>T : T +>T : T +>P : P +>P : P + +export function bar(obj: T) { +>bar : (obj: T) => T extends () => infer P ? P : never +>T : T +>obj : T +>T : T + + return foo(obj); +>foo(obj) : T extends () => infer P ? P : never +>foo : (obj: T) => T extends () => infer P ? P : never +>obj : T +} +