mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-07-02 14:48:32 -05:00
Merge pull request #5942 from Microsoft/fixUnionToUnionTypeInference
Fix union/union or intersection/intersection type inference
This commit is contained in:
14
tests/baselines/reference/recursiveUnionTypeInference.js
Normal file
14
tests/baselines/reference/recursiveUnionTypeInference.js
Normal file
@@ -0,0 +1,14 @@
|
||||
//// [recursiveUnionTypeInference.ts]
|
||||
interface Foo<T> {
|
||||
x: T;
|
||||
}
|
||||
|
||||
function bar<T>(x: Foo<T> | string): T {
|
||||
return bar(x);
|
||||
}
|
||||
|
||||
|
||||
//// [recursiveUnionTypeInference.js]
|
||||
function bar(x) {
|
||||
return bar(x);
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
=== tests/cases/compiler/recursiveUnionTypeInference.ts ===
|
||||
interface Foo<T> {
|
||||
>Foo : Symbol(Foo, Decl(recursiveUnionTypeInference.ts, 0, 0))
|
||||
>T : Symbol(T, Decl(recursiveUnionTypeInference.ts, 0, 14))
|
||||
|
||||
x: T;
|
||||
>x : Symbol(x, Decl(recursiveUnionTypeInference.ts, 0, 18))
|
||||
>T : Symbol(T, Decl(recursiveUnionTypeInference.ts, 0, 14))
|
||||
}
|
||||
|
||||
function bar<T>(x: Foo<T> | string): T {
|
||||
>bar : Symbol(bar, Decl(recursiveUnionTypeInference.ts, 2, 1))
|
||||
>T : Symbol(T, Decl(recursiveUnionTypeInference.ts, 4, 13))
|
||||
>x : Symbol(x, Decl(recursiveUnionTypeInference.ts, 4, 16))
|
||||
>Foo : Symbol(Foo, Decl(recursiveUnionTypeInference.ts, 0, 0))
|
||||
>T : Symbol(T, Decl(recursiveUnionTypeInference.ts, 4, 13))
|
||||
>T : Symbol(T, Decl(recursiveUnionTypeInference.ts, 4, 13))
|
||||
|
||||
return bar(x);
|
||||
>bar : Symbol(bar, Decl(recursiveUnionTypeInference.ts, 2, 1))
|
||||
>x : Symbol(x, Decl(recursiveUnionTypeInference.ts, 4, 16))
|
||||
}
|
||||
|
||||
24
tests/baselines/reference/recursiveUnionTypeInference.types
Normal file
24
tests/baselines/reference/recursiveUnionTypeInference.types
Normal file
@@ -0,0 +1,24 @@
|
||||
=== tests/cases/compiler/recursiveUnionTypeInference.ts ===
|
||||
interface Foo<T> {
|
||||
>Foo : Foo<T>
|
||||
>T : T
|
||||
|
||||
x: T;
|
||||
>x : T
|
||||
>T : T
|
||||
}
|
||||
|
||||
function bar<T>(x: Foo<T> | string): T {
|
||||
>bar : <T>(x: Foo<T> | string) => T
|
||||
>T : T
|
||||
>x : Foo<T> | string
|
||||
>Foo : Foo<T>
|
||||
>T : T
|
||||
>T : T
|
||||
|
||||
return bar(x);
|
||||
>bar(x) : T
|
||||
>bar : <T>(x: Foo<T> | string) => T
|
||||
>x : Foo<T> | string
|
||||
}
|
||||
|
||||
7
tests/cases/compiler/recursiveUnionTypeInference.ts
Normal file
7
tests/cases/compiler/recursiveUnionTypeInference.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
interface Foo<T> {
|
||||
x: T;
|
||||
}
|
||||
|
||||
function bar<T>(x: Foo<T> | string): T {
|
||||
return bar(x);
|
||||
}
|
||||
Reference in New Issue
Block a user