Skip to content

Commit 275311e

Browse files
committed
Accept new baselines
1 parent eb3fd15 commit 275311e

File tree

3 files changed

+89
-4
lines changed

3 files changed

+89
-4
lines changed
Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,42 @@
11
//// [inferTypes2.ts]
2-
// Repro from #22755
2+
// Repros from #22755
33

44
export declare function foo<T>(obj: T): T extends () => infer P ? P : never;
55
export function bar<T>(obj: T) {
66
return foo(obj);
77
}
8+
9+
export type BadNested<T> = { x: T extends number ? T : string };
10+
11+
export declare function foo2<T>(obj: T): T extends { [K in keyof BadNested<infer P>]: BadNested<infer P>[K] } ? P : never;
12+
export function bar2<T>(obj: T) {
13+
return foo2(obj);
14+
}
815

916

1017
//// [inferTypes2.js]
1118
"use strict";
12-
// Repro from #22755
19+
// Repros from #22755
1320
exports.__esModule = true;
1421
function bar(obj) {
1522
return foo(obj);
1623
}
1724
exports.bar = bar;
25+
function bar2(obj) {
26+
return foo2(obj);
27+
}
28+
exports.bar2 = bar2;
1829

1930

2031
//// [inferTypes2.d.ts]
2132
export declare function foo<T>(obj: T): T extends () => infer P ? P : never;
2233
export declare function bar<T>(obj: T): T extends () => infer P ? P : never;
34+
export declare type BadNested<T> = {
35+
x: T extends number ? T : string;
36+
};
37+
export declare function foo2<T>(obj: T): T extends {
38+
[K in keyof BadNested<infer P>]: BadNested<infer P>[K];
39+
} ? P : never;
40+
export declare function bar2<T>(obj: T): T extends {
41+
x: infer P extends number ? infer P : string;
42+
} ? P : never;

tests/baselines/reference/inferTypes2.symbols

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
=== tests/cases/conformance/types/conditional/inferTypes2.ts ===
2-
// Repro from #22755
2+
// Repros from #22755
33

44
export declare function foo<T>(obj: T): T extends () => infer P ? P : never;
55
>foo : Symbol(foo, Decl(inferTypes2.ts, 0, 0))
@@ -21,3 +21,35 @@ export function bar<T>(obj: T) {
2121
>obj : Symbol(obj, Decl(inferTypes2.ts, 3, 23))
2222
}
2323

24+
export type BadNested<T> = { x: T extends number ? T : string };
25+
>BadNested : Symbol(BadNested, Decl(inferTypes2.ts, 5, 1))
26+
>T : Symbol(T, Decl(inferTypes2.ts, 7, 22))
27+
>x : Symbol(x, Decl(inferTypes2.ts, 7, 28))
28+
>T : Symbol(T, Decl(inferTypes2.ts, 7, 22))
29+
>T : Symbol(T, Decl(inferTypes2.ts, 7, 22))
30+
31+
export declare function foo2<T>(obj: T): T extends { [K in keyof BadNested<infer P>]: BadNested<infer P>[K] } ? P : never;
32+
>foo2 : Symbol(foo2, Decl(inferTypes2.ts, 7, 64))
33+
>T : Symbol(T, Decl(inferTypes2.ts, 9, 29))
34+
>obj : Symbol(obj, Decl(inferTypes2.ts, 9, 32))
35+
>T : Symbol(T, Decl(inferTypes2.ts, 9, 29))
36+
>T : Symbol(T, Decl(inferTypes2.ts, 9, 29))
37+
>K : Symbol(K, Decl(inferTypes2.ts, 9, 54))
38+
>BadNested : Symbol(BadNested, Decl(inferTypes2.ts, 5, 1))
39+
>P : Symbol(P, Decl(inferTypes2.ts, 9, 80), Decl(inferTypes2.ts, 9, 101))
40+
>BadNested : Symbol(BadNested, Decl(inferTypes2.ts, 5, 1))
41+
>P : Symbol(P, Decl(inferTypes2.ts, 9, 80), Decl(inferTypes2.ts, 9, 101))
42+
>K : Symbol(K, Decl(inferTypes2.ts, 9, 54))
43+
>P : Symbol(P, Decl(inferTypes2.ts, 9, 80), Decl(inferTypes2.ts, 9, 101))
44+
45+
export function bar2<T>(obj: T) {
46+
>bar2 : Symbol(bar2, Decl(inferTypes2.ts, 9, 122))
47+
>T : Symbol(T, Decl(inferTypes2.ts, 10, 21))
48+
>obj : Symbol(obj, Decl(inferTypes2.ts, 10, 24))
49+
>T : Symbol(T, Decl(inferTypes2.ts, 10, 21))
50+
51+
return foo2(obj);
52+
>foo2 : Symbol(foo2, Decl(inferTypes2.ts, 7, 64))
53+
>obj : Symbol(obj, Decl(inferTypes2.ts, 10, 24))
54+
}
55+

tests/baselines/reference/inferTypes2.types

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
=== tests/cases/conformance/types/conditional/inferTypes2.ts ===
2-
// Repro from #22755
2+
// Repros from #22755
33

44
export declare function foo<T>(obj: T): T extends () => infer P ? P : never;
55
>foo : <T>(obj: T) => T extends () => infer P ? P : never
@@ -22,3 +22,36 @@ export function bar<T>(obj: T) {
2222
>obj : T
2323
}
2424

25+
export type BadNested<T> = { x: T extends number ? T : string };
26+
>BadNested : BadNested<T>
27+
>T : T
28+
>x : T extends number ? T : string
29+
>T : T
30+
>T : T
31+
32+
export declare function foo2<T>(obj: T): T extends { [K in keyof BadNested<infer P>]: BadNested<infer P>[K] } ? P : never;
33+
>foo2 : <T>(obj: T) => T extends { x: infer P extends number ? infer P : string; } ? P : never
34+
>T : T
35+
>obj : T
36+
>T : T
37+
>T : T
38+
>K : K
39+
>BadNested : BadNested<T>
40+
>P : P
41+
>BadNested : BadNested<T>
42+
>P : P
43+
>K : K
44+
>P : P
45+
46+
export function bar2<T>(obj: T) {
47+
>bar2 : <T>(obj: T) => T extends { x: infer P extends number ? infer P : string; } ? P : never
48+
>T : T
49+
>obj : T
50+
>T : T
51+
52+
return foo2(obj);
53+
>foo2(obj) : T extends { x: infer P extends number ? infer P : string; } ? P : never
54+
>foo2 : <T>(obj: T) => T extends { x: infer P extends number ? infer P : string; } ? P : never
55+
>obj : T
56+
}
57+

0 commit comments

Comments
 (0)