mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-03-15 14:05:47 -05:00
Accept new baselines
This commit is contained in:
@@ -1,22 +1,42 @@
|
||||
//// [inferTypes2.ts]
|
||||
// Repro from #22755
|
||||
// Repros from #22755
|
||||
|
||||
export declare function foo<T>(obj: T): T extends () => infer P ? P : never;
|
||||
export function bar<T>(obj: T) {
|
||||
return foo(obj);
|
||||
}
|
||||
|
||||
export type BadNested<T> = { x: T extends number ? T : string };
|
||||
|
||||
export declare function foo2<T>(obj: T): T extends { [K in keyof BadNested<infer P>]: BadNested<infer P>[K] } ? P : never;
|
||||
export function bar2<T>(obj: T) {
|
||||
return foo2(obj);
|
||||
}
|
||||
|
||||
|
||||
//// [inferTypes2.js]
|
||||
"use strict";
|
||||
// Repro from #22755
|
||||
// Repros from #22755
|
||||
exports.__esModule = true;
|
||||
function bar(obj) {
|
||||
return foo(obj);
|
||||
}
|
||||
exports.bar = bar;
|
||||
function bar2(obj) {
|
||||
return foo2(obj);
|
||||
}
|
||||
exports.bar2 = bar2;
|
||||
|
||||
|
||||
//// [inferTypes2.d.ts]
|
||||
export declare function foo<T>(obj: T): T extends () => infer P ? P : never;
|
||||
export declare function bar<T>(obj: T): T extends () => infer P ? P : never;
|
||||
export declare type BadNested<T> = {
|
||||
x: T extends number ? T : string;
|
||||
};
|
||||
export declare function foo2<T>(obj: T): T extends {
|
||||
[K in keyof BadNested<infer P>]: BadNested<infer P>[K];
|
||||
} ? P : never;
|
||||
export declare function bar2<T>(obj: T): T extends {
|
||||
x: infer P extends number ? infer P : string;
|
||||
} ? P : never;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
=== tests/cases/conformance/types/conditional/inferTypes2.ts ===
|
||||
// Repro from #22755
|
||||
// Repros from #22755
|
||||
|
||||
export declare function foo<T>(obj: T): T extends () => infer P ? P : never;
|
||||
>foo : Symbol(foo, Decl(inferTypes2.ts, 0, 0))
|
||||
@@ -21,3 +21,35 @@ export function bar<T>(obj: T) {
|
||||
>obj : Symbol(obj, Decl(inferTypes2.ts, 3, 23))
|
||||
}
|
||||
|
||||
export type BadNested<T> = { x: T extends number ? T : string };
|
||||
>BadNested : Symbol(BadNested, Decl(inferTypes2.ts, 5, 1))
|
||||
>T : Symbol(T, Decl(inferTypes2.ts, 7, 22))
|
||||
>x : Symbol(x, Decl(inferTypes2.ts, 7, 28))
|
||||
>T : Symbol(T, Decl(inferTypes2.ts, 7, 22))
|
||||
>T : Symbol(T, Decl(inferTypes2.ts, 7, 22))
|
||||
|
||||
export declare function foo2<T>(obj: T): T extends { [K in keyof BadNested<infer P>]: BadNested<infer P>[K] } ? P : never;
|
||||
>foo2 : Symbol(foo2, Decl(inferTypes2.ts, 7, 64))
|
||||
>T : Symbol(T, Decl(inferTypes2.ts, 9, 29))
|
||||
>obj : Symbol(obj, Decl(inferTypes2.ts, 9, 32))
|
||||
>T : Symbol(T, Decl(inferTypes2.ts, 9, 29))
|
||||
>T : Symbol(T, Decl(inferTypes2.ts, 9, 29))
|
||||
>K : Symbol(K, Decl(inferTypes2.ts, 9, 54))
|
||||
>BadNested : Symbol(BadNested, Decl(inferTypes2.ts, 5, 1))
|
||||
>P : Symbol(P, Decl(inferTypes2.ts, 9, 80), Decl(inferTypes2.ts, 9, 101))
|
||||
>BadNested : Symbol(BadNested, Decl(inferTypes2.ts, 5, 1))
|
||||
>P : Symbol(P, Decl(inferTypes2.ts, 9, 80), Decl(inferTypes2.ts, 9, 101))
|
||||
>K : Symbol(K, Decl(inferTypes2.ts, 9, 54))
|
||||
>P : Symbol(P, Decl(inferTypes2.ts, 9, 80), Decl(inferTypes2.ts, 9, 101))
|
||||
|
||||
export function bar2<T>(obj: T) {
|
||||
>bar2 : Symbol(bar2, Decl(inferTypes2.ts, 9, 122))
|
||||
>T : Symbol(T, Decl(inferTypes2.ts, 10, 21))
|
||||
>obj : Symbol(obj, Decl(inferTypes2.ts, 10, 24))
|
||||
>T : Symbol(T, Decl(inferTypes2.ts, 10, 21))
|
||||
|
||||
return foo2(obj);
|
||||
>foo2 : Symbol(foo2, Decl(inferTypes2.ts, 7, 64))
|
||||
>obj : Symbol(obj, Decl(inferTypes2.ts, 10, 24))
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
=== tests/cases/conformance/types/conditional/inferTypes2.ts ===
|
||||
// Repro from #22755
|
||||
// Repros from #22755
|
||||
|
||||
export declare function foo<T>(obj: T): T extends () => infer P ? P : never;
|
||||
>foo : <T>(obj: T) => T extends () => infer P ? P : never
|
||||
@@ -22,3 +22,36 @@ export function bar<T>(obj: T) {
|
||||
>obj : T
|
||||
}
|
||||
|
||||
export type BadNested<T> = { x: T extends number ? T : string };
|
||||
>BadNested : BadNested<T>
|
||||
>T : T
|
||||
>x : T extends number ? T : string
|
||||
>T : T
|
||||
>T : T
|
||||
|
||||
export declare function foo2<T>(obj: T): T extends { [K in keyof BadNested<infer P>]: BadNested<infer P>[K] } ? P : never;
|
||||
>foo2 : <T>(obj: T) => T extends { x: infer P extends number ? infer P : string; } ? P : never
|
||||
>T : T
|
||||
>obj : T
|
||||
>T : T
|
||||
>T : T
|
||||
>K : K
|
||||
>BadNested : BadNested<T>
|
||||
>P : P
|
||||
>BadNested : BadNested<T>
|
||||
>P : P
|
||||
>K : K
|
||||
>P : P
|
||||
|
||||
export function bar2<T>(obj: T) {
|
||||
>bar2 : <T>(obj: T) => T extends { x: infer P extends number ? infer P : string; } ? P : never
|
||||
>T : T
|
||||
>obj : T
|
||||
>T : T
|
||||
|
||||
return foo2(obj);
|
||||
>foo2(obj) : T extends { x: infer P extends number ? infer P : string; } ? P : never
|
||||
>foo2 : <T>(obj: T) => T extends { x: infer P extends number ? infer P : string; } ? P : never
|
||||
>obj : T
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user