Skip to content

Commit 00c2075

Browse files
committed
add extra test
1 parent 2198dcc commit 00c2075

3 files changed

Lines changed: 84 additions & 0 deletions

File tree

tsc/testdata/baselines/reference/compiler/genericDefaultInReentrantCallResolution.symbols

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,42 @@ export const check: Promise<string> = cb({ v: 1 });
7373
>cb : Symbol(cb, Decl(genericDefaultInReentrantCallResolution.ts, 15, 12))
7474
>v : Symbol(v, Decl(genericDefaultInReentrantCallResolution.ts, 19, 42))
7575

76+
// https://github.com/microsoft/TypeScript/issues/63949#issuecomment-5400383233
77+
78+
declare function request<T = { input: { value: number }; output: string }>(
79+
>request : Symbol(request, Decl(genericDefaultInReentrantCallResolution.ts, 19, 51))
80+
>T : Symbol(T, Decl(genericDefaultInReentrantCallResolution.ts, 23, 25))
81+
>input : Symbol(input, Decl(genericDefaultInReentrantCallResolution.ts, 23, 30))
82+
>value : Symbol(value, Decl(genericDefaultInReentrantCallResolution.ts, 23, 39))
83+
>output : Symbol(output, Decl(genericDefaultInReentrantCallResolution.ts, 23, 56))
84+
85+
body?: T extends { input: unknown } ? T["input"] : never,
86+
>body : Symbol(body, Decl(genericDefaultInReentrantCallResolution.ts, 23, 75))
87+
>T : Symbol(T, Decl(genericDefaultInReentrantCallResolution.ts, 23, 25))
88+
>input : Symbol(input, Decl(genericDefaultInReentrantCallResolution.ts, 24, 22))
89+
>T : Symbol(T, Decl(genericDefaultInReentrantCallResolution.ts, 23, 25))
90+
91+
): T extends { output: unknown } ? T["output"] : T;
92+
>T : Symbol(T, Decl(genericDefaultInReentrantCallResolution.ts, 23, 25))
93+
>output : Symbol(output, Decl(genericDefaultInReentrantCallResolution.ts, 25, 14))
94+
>T : Symbol(T, Decl(genericDefaultInReentrantCallResolution.ts, 23, 25))
95+
>T : Symbol(T, Decl(genericDefaultInReentrantCallResolution.ts, 23, 25))
96+
97+
declare function identity<T>(callback: T): T;
98+
>identity : Symbol(identity, Decl(genericDefaultInReentrantCallResolution.ts, 25, 51))
99+
>T : Symbol(T, Decl(genericDefaultInReentrantCallResolution.ts, 27, 26))
100+
>callback : Symbol(callback, Decl(genericDefaultInReentrantCallResolution.ts, 27, 29))
101+
>T : Symbol(T, Decl(genericDefaultInReentrantCallResolution.ts, 27, 26))
102+
>T : Symbol(T, Decl(genericDefaultInReentrantCallResolution.ts, 27, 26))
103+
104+
identity((data: { value: number }) =>
105+
>identity : Symbol(identity, Decl(genericDefaultInReentrantCallResolution.ts, 25, 51))
106+
>data : Symbol(data, Decl(genericDefaultInReentrantCallResolution.ts, 29, 10))
107+
>value : Symbol(value, Decl(genericDefaultInReentrantCallResolution.ts, 29, 17))
108+
109+
request(data),
110+
>request : Symbol(request, Decl(genericDefaultInReentrantCallResolution.ts, 19, 51))
111+
>data : Symbol(data, Decl(genericDefaultInReentrantCallResolution.ts, 29, 10))
112+
113+
);
114+

tsc/testdata/baselines/reference/compiler/genericDefaultInReentrantCallResolution.types

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,36 @@ export const check: Promise<string> = cb({ v: 1 });
6161
>v : number
6262
>1 : 1
6363

64+
// https://github.com/microsoft/TypeScript/issues/63949#issuecomment-5400383233
65+
66+
declare function request<T = { input: { value: number }; output: string }>(
67+
>request : <T = { input: { value: number; }; output: string; }>(body?: T extends { input: unknown; } ? T["input"] : never) => T extends { output: unknown; } ? T["output"] : T
68+
>input : { value: number; }
69+
>value : number
70+
>output : string
71+
72+
body?: T extends { input: unknown } ? T["input"] : never,
73+
>body : (T extends { input: unknown; } ? T["input"] : never) | undefined
74+
>input : unknown
75+
76+
): T extends { output: unknown } ? T["output"] : T;
77+
>output : unknown
78+
79+
declare function identity<T>(callback: T): T;
80+
>identity : <T>(callback: T) => T
81+
>callback : T
82+
83+
identity((data: { value: number }) =>
84+
>identity((data: { value: number }) => request(data),) : (data: { value: number; }) => string
85+
>identity : <T>(callback: T) => T
86+
>(data: { value: number }) => request(data) : (data: { value: number; }) => string
87+
>data : { value: number; }
88+
>value : number
89+
90+
request(data),
91+
>request(data) : string
92+
>request : <T = { input: { value: number; }; output: string; }>(body?: T extends { input: unknown; } ? T["input"] : never) => T extends { output: unknown; } ? T["output"] : T
93+
>data : { value: number; }
94+
95+
);
96+

tsc/testdata/tests/cases/compiler/genericDefaultInReentrantCallResolution.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,15 @@ export const cb = useCallback((data: { v: number }) => {
2222
}, []);
2323

2424
export const check: Promise<string> = cb({ v: 1 });
25+
26+
// https://github.com/microsoft/TypeScript/issues/63949#issuecomment-5400383233
27+
28+
declare function request<T = { input: { value: number }; output: string }>(
29+
body?: T extends { input: unknown } ? T["input"] : never,
30+
): T extends { output: unknown } ? T["output"] : T;
31+
32+
declare function identity<T>(callback: T): T;
33+
34+
identity((data: { value: number }) =>
35+
request(data),
36+
);

0 commit comments

Comments
 (0)