diff --git a/tests/baselines/reference/unionTypeInference.errors.txt b/tests/baselines/reference/unionTypeInference.errors.txt index 5534b8a175d..b39b8fcd15c 100644 --- a/tests/baselines/reference/unionTypeInference.errors.txt +++ b/tests/baselines/reference/unionTypeInference.errors.txt @@ -75,4 +75,13 @@ tests/cases/conformance/types/typeRelationships/typeInference/unionTypeInference await fun(awaitedValue); } } + + // Repro from #32752 + + type Deep = { [K in keyof T]: T[K] | Deep }; + + declare function baz(dp: Deep): T; + declare let xx: { a: string | undefined }; + + baz(xx); \ No newline at end of file diff --git a/tests/baselines/reference/unionTypeInference.js b/tests/baselines/reference/unionTypeInference.js index c26e4241cb5..c5157165eae 100644 --- a/tests/baselines/reference/unionTypeInference.js +++ b/tests/baselines/reference/unionTypeInference.js @@ -67,6 +67,15 @@ async function fun(deepPromised: DeepPromised) { await fun(awaitedValue); } } + +// Repro from #32752 + +type Deep = { [K in keyof T]: T[K] | Deep }; + +declare function baz(dp: Deep): T; +declare let xx: { a: string | undefined }; + +baz(xx); //// [unionTypeInference.js] @@ -101,3 +110,4 @@ async function fun(deepPromised) { await fun(awaitedValue); } } +baz(xx); diff --git a/tests/baselines/reference/unionTypeInference.symbols b/tests/baselines/reference/unionTypeInference.symbols index 65377783184..11fdc523964 100644 --- a/tests/baselines/reference/unionTypeInference.symbols +++ b/tests/baselines/reference/unionTypeInference.symbols @@ -247,3 +247,32 @@ async function fun(deepPromised: DeepPromised) { } } +// Repro from #32752 + +type Deep = { [K in keyof T]: T[K] | Deep }; +>Deep : Symbol(Deep, Decl(unionTypeInference.ts, 67, 1)) +>T : Symbol(T, Decl(unionTypeInference.ts, 71, 10)) +>K : Symbol(K, Decl(unionTypeInference.ts, 71, 18)) +>T : Symbol(T, Decl(unionTypeInference.ts, 71, 10)) +>T : Symbol(T, Decl(unionTypeInference.ts, 71, 10)) +>K : Symbol(K, Decl(unionTypeInference.ts, 71, 18)) +>Deep : Symbol(Deep, Decl(unionTypeInference.ts, 67, 1)) +>T : Symbol(T, Decl(unionTypeInference.ts, 71, 10)) +>K : Symbol(K, Decl(unionTypeInference.ts, 71, 18)) + +declare function baz(dp: Deep): T; +>baz : Symbol(baz, Decl(unionTypeInference.ts, 71, 53)) +>T : Symbol(T, Decl(unionTypeInference.ts, 73, 21)) +>dp : Symbol(dp, Decl(unionTypeInference.ts, 73, 24)) +>Deep : Symbol(Deep, Decl(unionTypeInference.ts, 67, 1)) +>T : Symbol(T, Decl(unionTypeInference.ts, 73, 21)) +>T : Symbol(T, Decl(unionTypeInference.ts, 73, 21)) + +declare let xx: { a: string | undefined }; +>xx : Symbol(xx, Decl(unionTypeInference.ts, 74, 11)) +>a : Symbol(a, Decl(unionTypeInference.ts, 74, 17)) + +baz(xx); +>baz : Symbol(baz, Decl(unionTypeInference.ts, 71, 53)) +>xx : Symbol(xx, Decl(unionTypeInference.ts, 74, 11)) + diff --git a/tests/baselines/reference/unionTypeInference.types b/tests/baselines/reference/unionTypeInference.types index 6cd2baec6ba..4ce2d9c43a0 100644 --- a/tests/baselines/reference/unionTypeInference.types +++ b/tests/baselines/reference/unionTypeInference.types @@ -236,3 +236,21 @@ async function fun(deepPromised: DeepPromised) { } } +// Repro from #32752 + +type Deep = { [K in keyof T]: T[K] | Deep }; +>Deep : Deep + +declare function baz(dp: Deep): T; +>baz : (dp: Deep) => T +>dp : Deep + +declare let xx: { a: string | undefined }; +>xx : { a: string | undefined; } +>a : string | undefined + +baz(xx); +>baz(xx) : { a: string | undefined; } +>baz : (dp: Deep) => T +>xx : { a: string | undefined; } +