Skip to content

Commit

Permalink
Accept new baselines
Browse files Browse the repository at this point in the history
  • Loading branch information
ahejlsberg committed Aug 17, 2018
1 parent 596493c commit 53f5e84
Show file tree
Hide file tree
Showing 3 changed files with 182 additions and 0 deletions.
40 changes: 40 additions & 0 deletions tests/baselines/reference/mappedTypesArraysTuples.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,28 @@ function f1(a: number, b: Promise<number>, c: string[], d: Promise<string[]>) {
let x3 = all(a, b, c);
let x4 = all(a, b, c, d);
}

function f2<T extends any[]>(a: Boxified<T>) {
let x: Box<any> | undefined = a.pop();
let y: Box<any>[] = a.concat(a);
}

// Repro from #26163

type ElementType<T> = T extends Array<infer U> ? U : never;
type Mapped<T> = { [K in keyof T]: T[K] };

type F<T> = ElementType<Mapped<T>>;
type R1 = F<[string, number, boolean]>; // string | number | boolean
type R2 = ElementType<Mapped<[string, number, boolean]>>; // string | number | boolean

// Repro from #26163

declare function acceptArray(arr: any[]): void;
declare function mapArray<T extends any[]>(arr: T): Mapped<T>;
function acceptMappedArray<T extends any[]>(arr: T) {
acceptArray(mapArray(arr));
}


//// [mappedTypesArraysTuples.js]
Expand All @@ -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]
Expand Down Expand Up @@ -142,3 +171,14 @@ declare type Awaitified<T> = {
};
declare function all<T extends any[]>(...values: T): Promise<Awaitified<T>>;
declare function f1(a: number, b: Promise<number>, c: string[], d: Promise<string[]>): void;
declare function f2<T extends any[]>(a: Boxified<T>): void;
declare type ElementType<T> = T extends Array<infer U> ? U : never;
declare type Mapped<T> = {
[K in keyof T]: T[K];
};
declare type F<T> = ElementType<Mapped<T>>;
declare type R1 = F<[string, number, boolean]>;
declare type R2 = ElementType<Mapped<[string, number, boolean]>>;
declare function acceptArray(arr: any[]): void;
declare function mapArray<T extends any[]>(arr: T): Mapped<T>;
declare function acceptMappedArray<T extends any[]>(arr: T): void;
83 changes: 83 additions & 0 deletions tests/baselines/reference/mappedTypesArraysTuples.symbols
Original file line number Diff line number Diff line change
Expand Up @@ -245,3 +245,86 @@ function f1(a: number, b: Promise<number>, c: string[], d: Promise<string[]>) {
>d : Symbol(d, Decl(mappedTypesArraysTuples.ts, 56, 55))
}

function f2<T extends any[]>(a: Boxified<T>) {
>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<any> | 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<any>[] = 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> = T extends Array<infer U> ? 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<T> = { [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<T> = ElementType<Mapped<T>>;
>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<Mapped<[string, number, boolean]>>; // 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<T extends any[]>(arr: T): Mapped<T>;
>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<T extends any[]>(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))
}

59 changes: 59 additions & 0 deletions tests/baselines/reference/mappedTypesArraysTuples.types
Original file line number Diff line number Diff line change
Expand Up @@ -182,3 +182,62 @@ function f1(a: number, b: Promise<number>, c: string[], d: Promise<string[]>) {
>d : Promise<string[]>
}

function f2<T extends any[]>(a: Boxified<T>) {
>f2 : <T extends any[]>(a: Boxified<T>) => void
>a : Boxified<T>

let x: Box<any> | undefined = a.pop();
>x : Box<any> | undefined
>a.pop() : Box<any> | undefined
>a.pop : () => Box<any> | undefined
>a : Boxified<T>
>pop : () => Box<any> | undefined

let y: Box<any>[] = a.concat(a);
>y : Box<any>[]
>a.concat(a) : Box<any>[]
>a.concat : { (...items: ConcatArray<Box<any>>[]): Box<any>[]; (...items: (Box<any> | ConcatArray<Box<any>>)[]): Box<any>[]; }
>a : Boxified<T>
>concat : { (...items: ConcatArray<Box<any>>[]): Box<any>[]; (...items: (Box<any> | ConcatArray<Box<any>>)[]): Box<any>[]; }
>a : Boxified<T>
}

// Repro from #26163

type ElementType<T> = T extends Array<infer U> ? U : never;
>ElementType : ElementType<T>

type Mapped<T> = { [K in keyof T]: T[K] };
>Mapped : Mapped<T>

type F<T> = ElementType<Mapped<T>>;
>F : ElementType<Mapped<T>>

type R1 = F<[string, number, boolean]>; // string | number | boolean
>R1 : string | number | boolean

type R2 = ElementType<Mapped<[string, number, boolean]>>; // 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<T extends any[]>(arr: T): Mapped<T>;
>mapArray : <T extends any[]>(arr: T) => Mapped<T>
>arr : T

function acceptMappedArray<T extends any[]>(arr: T) {
>acceptMappedArray : <T extends any[]>(arr: T) => void
>arr : T

acceptArray(mapArray(arr));
>acceptArray(mapArray(arr)) : void
>acceptArray : (arr: any[]) => void
>mapArray(arr) : Mapped<T>
>mapArray : <T extends any[]>(arr: T) => Mapped<T>
>arr : T
}

0 comments on commit 53f5e84

Please sign in to comment.