From 53f5e84b25f2aa61dd60861a07acbf25089329ed Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Fri, 17 Aug 2018 10:11:34 -0700 Subject: [PATCH] Accept new baselines --- .../reference/mappedTypesArraysTuples.js | 40 +++++++++ .../reference/mappedTypesArraysTuples.symbols | 83 +++++++++++++++++++ .../reference/mappedTypesArraysTuples.types | 59 +++++++++++++ 3 files changed, 182 insertions(+) diff --git a/tests/baselines/reference/mappedTypesArraysTuples.js b/tests/baselines/reference/mappedTypesArraysTuples.js index 489d8493e0..d3d976c04d 100644 --- a/tests/baselines/reference/mappedTypesArraysTuples.js +++ b/tests/baselines/reference/mappedTypesArraysTuples.js @@ -61,6 +61,28 @@ function f1(a: number, b: Promise, c: string[], d: Promise) { let x3 = all(a, b, c); let x4 = all(a, b, c, d); } + +function f2(a: Boxified) { + let x: Box | undefined = a.pop(); + let y: Box[] = a.concat(a); +} + +// Repro from #26163 + +type ElementType = T extends Array ? U : never; +type Mapped = { [K in keyof T]: T[K] }; + +type F = ElementType>; +type R1 = F<[string, number, boolean]>; // string | number | boolean +type R2 = ElementType>; // string | number | boolean + +// Repro from #26163 + +declare function acceptArray(arr: any[]): void; +declare function mapArray(arr: T): Mapped; +function acceptMappedArray(arr: T) { + acceptArray(mapArray(arr)); +} //// [mappedTypesArraysTuples.js] @@ -77,6 +99,13 @@ function f1(a, b, c, d) { var x3 = all(a, b, c); var x4 = all(a, b, c, d); } +function f2(a) { + var x = a.pop(); + var y = a.concat(a); +} +function acceptMappedArray(arr) { + acceptArray(mapArray(arr)); +} //// [mappedTypesArraysTuples.d.ts] @@ -142,3 +171,14 @@ declare type Awaitified = { }; declare function all(...values: T): Promise>; declare function f1(a: number, b: Promise, c: string[], d: Promise): void; +declare function f2(a: Boxified): void; +declare type ElementType = T extends Array ? U : never; +declare type Mapped = { + [K in keyof T]: T[K]; +}; +declare type F = ElementType>; +declare type R1 = F<[string, number, boolean]>; +declare type R2 = ElementType>; +declare function acceptArray(arr: any[]): void; +declare function mapArray(arr: T): Mapped; +declare function acceptMappedArray(arr: T): void; diff --git a/tests/baselines/reference/mappedTypesArraysTuples.symbols b/tests/baselines/reference/mappedTypesArraysTuples.symbols index 7d743235a4..1815b354b6 100644 --- a/tests/baselines/reference/mappedTypesArraysTuples.symbols +++ b/tests/baselines/reference/mappedTypesArraysTuples.symbols @@ -245,3 +245,86 @@ function f1(a: number, b: Promise, c: string[], d: Promise) { >d : Symbol(d, Decl(mappedTypesArraysTuples.ts, 56, 55)) } +function f2(a: Boxified) { +>f2 : Symbol(f2, Decl(mappedTypesArraysTuples.ts, 61, 1)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 63, 12)) +>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 63, 29)) +>Boxified : Symbol(Boxified, Decl(mappedTypesArraysTuples.ts, 0, 27)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 63, 12)) + + let x: Box | undefined = a.pop(); +>x : Symbol(x, Decl(mappedTypesArraysTuples.ts, 64, 7)) +>Box : Symbol(Box, Decl(mappedTypesArraysTuples.ts, 0, 0)) +>a.pop : Symbol(Array.pop, Decl(lib.es5.d.ts, --, --)) +>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 63, 29)) +>pop : Symbol(Array.pop, Decl(lib.es5.d.ts, --, --)) + + let y: Box[] = a.concat(a); +>y : Symbol(y, Decl(mappedTypesArraysTuples.ts, 65, 7)) +>Box : Symbol(Box, Decl(mappedTypesArraysTuples.ts, 0, 0)) +>a.concat : Symbol(Array.concat, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 63, 29)) +>concat : Symbol(Array.concat, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 63, 29)) +} + +// Repro from #26163 + +type ElementType = T extends Array ? U : never; +>ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 66, 1)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 70, 17)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 70, 17)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>U : Symbol(U, Decl(mappedTypesArraysTuples.ts, 70, 43)) +>U : Symbol(U, Decl(mappedTypesArraysTuples.ts, 70, 43)) + +type Mapped = { [K in keyof T]: T[K] }; +>Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 70, 59)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 71, 12)) +>K : Symbol(K, Decl(mappedTypesArraysTuples.ts, 71, 20)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 71, 12)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 71, 12)) +>K : Symbol(K, Decl(mappedTypesArraysTuples.ts, 71, 20)) + +type F = ElementType>; +>F : Symbol(F, Decl(mappedTypesArraysTuples.ts, 71, 42)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 73, 7)) +>ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 66, 1)) +>Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 70, 59)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 73, 7)) + +type R1 = F<[string, number, boolean]>; // string | number | boolean +>R1 : Symbol(R1, Decl(mappedTypesArraysTuples.ts, 73, 35)) +>F : Symbol(F, Decl(mappedTypesArraysTuples.ts, 71, 42)) + +type R2 = ElementType>; // string | number | boolean +>R2 : Symbol(R2, Decl(mappedTypesArraysTuples.ts, 74, 39)) +>ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 66, 1)) +>Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 70, 59)) + +// Repro from #26163 + +declare function acceptArray(arr: any[]): void; +>acceptArray : Symbol(acceptArray, Decl(mappedTypesArraysTuples.ts, 75, 57)) +>arr : Symbol(arr, Decl(mappedTypesArraysTuples.ts, 79, 29)) + +declare function mapArray(arr: T): Mapped; +>mapArray : Symbol(mapArray, Decl(mappedTypesArraysTuples.ts, 79, 47)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 80, 26)) +>arr : Symbol(arr, Decl(mappedTypesArraysTuples.ts, 80, 43)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 80, 26)) +>Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 70, 59)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 80, 26)) + +function acceptMappedArray(arr: T) { +>acceptMappedArray : Symbol(acceptMappedArray, Decl(mappedTypesArraysTuples.ts, 80, 62)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 81, 27)) +>arr : Symbol(arr, Decl(mappedTypesArraysTuples.ts, 81, 44)) +>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 81, 27)) + + acceptArray(mapArray(arr)); +>acceptArray : Symbol(acceptArray, Decl(mappedTypesArraysTuples.ts, 75, 57)) +>mapArray : Symbol(mapArray, Decl(mappedTypesArraysTuples.ts, 79, 47)) +>arr : Symbol(arr, Decl(mappedTypesArraysTuples.ts, 81, 44)) +} + diff --git a/tests/baselines/reference/mappedTypesArraysTuples.types b/tests/baselines/reference/mappedTypesArraysTuples.types index e246f1d975..42ab457b78 100644 --- a/tests/baselines/reference/mappedTypesArraysTuples.types +++ b/tests/baselines/reference/mappedTypesArraysTuples.types @@ -182,3 +182,62 @@ function f1(a: number, b: Promise, c: string[], d: Promise) { >d : Promise } +function f2(a: Boxified) { +>f2 : (a: Boxified) => void +>a : Boxified + + let x: Box | undefined = a.pop(); +>x : Box | undefined +>a.pop() : Box | undefined +>a.pop : () => Box | undefined +>a : Boxified +>pop : () => Box | undefined + + let y: Box[] = a.concat(a); +>y : Box[] +>a.concat(a) : Box[] +>a.concat : { (...items: ConcatArray>[]): Box[]; (...items: (Box | ConcatArray>)[]): Box[]; } +>a : Boxified +>concat : { (...items: ConcatArray>[]): Box[]; (...items: (Box | ConcatArray>)[]): Box[]; } +>a : Boxified +} + +// Repro from #26163 + +type ElementType = T extends Array ? U : never; +>ElementType : ElementType + +type Mapped = { [K in keyof T]: T[K] }; +>Mapped : Mapped + +type F = ElementType>; +>F : ElementType> + +type R1 = F<[string, number, boolean]>; // string | number | boolean +>R1 : string | number | boolean + +type R2 = ElementType>; // string | number | boolean +>R2 : string | number | boolean + +// Repro from #26163 + +declare function acceptArray(arr: any[]): void; +>acceptArray : (arr: any[]) => void +>arr : any[] + +declare function mapArray(arr: T): Mapped; +>mapArray : (arr: T) => Mapped +>arr : T + +function acceptMappedArray(arr: T) { +>acceptMappedArray : (arr: T) => void +>arr : T + + acceptArray(mapArray(arr)); +>acceptArray(mapArray(arr)) : void +>acceptArray : (arr: any[]) => void +>mapArray(arr) : Mapped +>mapArray : (arr: T) => Mapped +>arr : T +} +