Test:infer from related types only

This commit is contained in:
Nathan Shively-Sanders
2017-08-03 09:14:59 -07:00
parent 13750d2d65
commit 0d7f0e0e19
4 changed files with 66 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
//// [doNotInferUnrelatedTypes.ts]
// #16709
declare function dearray<T>(ara: ReadonlyArray<T>): T;
type LiteralType = "foo" | "bar";
declare var alt: Array<LiteralType>;
let foo: LiteralType = dearray(alt);
//// [doNotInferUnrelatedTypes.js]
var foo = dearray(alt);

View File

@@ -0,0 +1,24 @@
=== tests/cases/compiler/doNotInferUnrelatedTypes.ts ===
// #16709
declare function dearray<T>(ara: ReadonlyArray<T>): T;
>dearray : Symbol(dearray, Decl(doNotInferUnrelatedTypes.ts, 0, 0))
>T : Symbol(T, Decl(doNotInferUnrelatedTypes.ts, 1, 25))
>ara : Symbol(ara, Decl(doNotInferUnrelatedTypes.ts, 1, 28))
>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.d.ts, --, --))
>T : Symbol(T, Decl(doNotInferUnrelatedTypes.ts, 1, 25))
>T : Symbol(T, Decl(doNotInferUnrelatedTypes.ts, 1, 25))
type LiteralType = "foo" | "bar";
>LiteralType : Symbol(LiteralType, Decl(doNotInferUnrelatedTypes.ts, 1, 54))
declare var alt: Array<LiteralType>;
>alt : Symbol(alt, Decl(doNotInferUnrelatedTypes.ts, 3, 11))
>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
>LiteralType : Symbol(LiteralType, Decl(doNotInferUnrelatedTypes.ts, 1, 54))
let foo: LiteralType = dearray(alt);
>foo : Symbol(foo, Decl(doNotInferUnrelatedTypes.ts, 5, 3))
>LiteralType : Symbol(LiteralType, Decl(doNotInferUnrelatedTypes.ts, 1, 54))
>dearray : Symbol(dearray, Decl(doNotInferUnrelatedTypes.ts, 0, 0))
>alt : Symbol(alt, Decl(doNotInferUnrelatedTypes.ts, 3, 11))

View File

@@ -0,0 +1,25 @@
=== tests/cases/compiler/doNotInferUnrelatedTypes.ts ===
// #16709
declare function dearray<T>(ara: ReadonlyArray<T>): T;
>dearray : <T>(ara: ReadonlyArray<T>) => T
>T : T
>ara : ReadonlyArray<T>
>ReadonlyArray : ReadonlyArray<T>
>T : T
>T : T
type LiteralType = "foo" | "bar";
>LiteralType : LiteralType
declare var alt: Array<LiteralType>;
>alt : LiteralType[]
>Array : T[]
>LiteralType : LiteralType
let foo: LiteralType = dearray(alt);
>foo : LiteralType
>LiteralType : LiteralType
>dearray(alt) : LiteralType
>dearray : <T>(ara: ReadonlyArray<T>) => T
>alt : LiteralType[]

View File

@@ -0,0 +1,6 @@
// #16709
declare function dearray<T>(ara: ReadonlyArray<T>): T;
type LiteralType = "foo" | "bar";
declare var alt: Array<LiteralType>;
let foo: LiteralType = dearray(alt);