Accept new baselines

This commit is contained in:
Anders Hejlsberg
2019-01-15 14:45:08 -08:00
parent cff7874288
commit a7ca7f4561
7 changed files with 457 additions and 139 deletions
@@ -28,6 +28,14 @@ type B = { b: string };
type T40 = Boxified<A | A[] | ReadonlyArray<A> | [A, B] | string | string[]>;
type ReadWrite<T> = { -readonly [P in keyof T] : T[P] };
type T50 = Readonly<string[]>;
type T51 = Readonly<[number, number]>;
type T52 = Partial<Readonly<string[]>>;
type T53 = Readonly<Partial<string[]>>;
type T54 = ReadWrite<Required<T53>>;
declare function unboxify<T>(x: Boxified<T>): T;
declare let x10: [Box<number>, Box<string>, ...Box<boolean>[]];
@@ -147,6 +155,14 @@ declare type B = {
b: string;
};
declare type T40 = Boxified<A | A[] | ReadonlyArray<A> | [A, B] | string | string[]>;
declare type ReadWrite<T> = {
-readonly [P in keyof T]: T[P];
};
declare type T50 = Readonly<string[]>;
declare type T51 = Readonly<[number, number]>;
declare type T52 = Partial<Readonly<string[]>>;
declare type T53 = Readonly<Partial<string[]>>;
declare type T54 = ReadWrite<Required<T53>>;
declare function unboxify<T>(x: Boxified<T>): T;
declare let x10: [Box<number>, Box<string>, ...Box<boolean>[]];
declare let y10: [number, string, ...boolean[]];
@@ -108,247 +108,279 @@ type T40 = Boxified<A | A[] | ReadonlyArray<A> | [A, B] | string | string[]>;
>A : Symbol(A, Decl(mappedTypesArraysTuples.ts, 22, 39))
>B : Symbol(B, Decl(mappedTypesArraysTuples.ts, 24, 23))
type ReadWrite<T> = { -readonly [P in keyof T] : T[P] };
>ReadWrite : Symbol(ReadWrite, Decl(mappedTypesArraysTuples.ts, 27, 77))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 29, 15))
>P : Symbol(P, Decl(mappedTypesArraysTuples.ts, 29, 33))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 29, 15))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 29, 15))
>P : Symbol(P, Decl(mappedTypesArraysTuples.ts, 29, 33))
type T50 = Readonly<string[]>;
>T50 : Symbol(T50, Decl(mappedTypesArraysTuples.ts, 29, 56))
>Readonly : Symbol(Readonly, Decl(lib.es5.d.ts, --, --))
type T51 = Readonly<[number, number]>;
>T51 : Symbol(T51, Decl(mappedTypesArraysTuples.ts, 31, 30))
>Readonly : Symbol(Readonly, Decl(lib.es5.d.ts, --, --))
type T52 = Partial<Readonly<string[]>>;
>T52 : Symbol(T52, Decl(mappedTypesArraysTuples.ts, 32, 38))
>Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --))
>Readonly : Symbol(Readonly, Decl(lib.es5.d.ts, --, --))
type T53 = Readonly<Partial<string[]>>;
>T53 : Symbol(T53, Decl(mappedTypesArraysTuples.ts, 33, 39))
>Readonly : Symbol(Readonly, Decl(lib.es5.d.ts, --, --))
>Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --))
type T54 = ReadWrite<Required<T53>>;
>T54 : Symbol(T54, Decl(mappedTypesArraysTuples.ts, 34, 39))
>ReadWrite : Symbol(ReadWrite, Decl(mappedTypesArraysTuples.ts, 27, 77))
>Required : Symbol(Required, Decl(lib.es5.d.ts, --, --))
>T53 : Symbol(T53, Decl(mappedTypesArraysTuples.ts, 33, 39))
declare function unboxify<T>(x: Boxified<T>): T;
>unboxify : Symbol(unboxify, Decl(mappedTypesArraysTuples.ts, 27, 77))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 29, 26))
>x : Symbol(x, Decl(mappedTypesArraysTuples.ts, 29, 29))
>unboxify : Symbol(unboxify, Decl(mappedTypesArraysTuples.ts, 35, 36))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 37, 26))
>x : Symbol(x, Decl(mappedTypesArraysTuples.ts, 37, 29))
>Boxified : Symbol(Boxified, Decl(mappedTypesArraysTuples.ts, 0, 27))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 29, 26))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 29, 26))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 37, 26))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 37, 26))
declare let x10: [Box<number>, Box<string>, ...Box<boolean>[]];
>x10 : Symbol(x10, Decl(mappedTypesArraysTuples.ts, 31, 11))
>x10 : Symbol(x10, Decl(mappedTypesArraysTuples.ts, 39, 11))
>Box : Symbol(Box, Decl(mappedTypesArraysTuples.ts, 0, 0))
>Box : Symbol(Box, Decl(mappedTypesArraysTuples.ts, 0, 0))
>Box : Symbol(Box, Decl(mappedTypesArraysTuples.ts, 0, 0))
let y10 = unboxify(x10);
>y10 : Symbol(y10, Decl(mappedTypesArraysTuples.ts, 32, 3))
>unboxify : Symbol(unboxify, Decl(mappedTypesArraysTuples.ts, 27, 77))
>x10 : Symbol(x10, Decl(mappedTypesArraysTuples.ts, 31, 11))
>y10 : Symbol(y10, Decl(mappedTypesArraysTuples.ts, 40, 3))
>unboxify : Symbol(unboxify, Decl(mappedTypesArraysTuples.ts, 35, 36))
>x10 : Symbol(x10, Decl(mappedTypesArraysTuples.ts, 39, 11))
declare let x11: Box<number>[];
>x11 : Symbol(x11, Decl(mappedTypesArraysTuples.ts, 34, 11))
>x11 : Symbol(x11, Decl(mappedTypesArraysTuples.ts, 42, 11))
>Box : Symbol(Box, Decl(mappedTypesArraysTuples.ts, 0, 0))
let y11 = unboxify(x11);
>y11 : Symbol(y11, Decl(mappedTypesArraysTuples.ts, 35, 3))
>unboxify : Symbol(unboxify, Decl(mappedTypesArraysTuples.ts, 27, 77))
>x11 : Symbol(x11, Decl(mappedTypesArraysTuples.ts, 34, 11))
>y11 : Symbol(y11, Decl(mappedTypesArraysTuples.ts, 43, 3))
>unboxify : Symbol(unboxify, Decl(mappedTypesArraysTuples.ts, 35, 36))
>x11 : Symbol(x11, Decl(mappedTypesArraysTuples.ts, 42, 11))
declare let x12: { a: Box<number>, b: Box<string[]> };
>x12 : Symbol(x12, Decl(mappedTypesArraysTuples.ts, 37, 11))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 37, 18))
>x12 : Symbol(x12, Decl(mappedTypesArraysTuples.ts, 45, 11))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 45, 18))
>Box : Symbol(Box, Decl(mappedTypesArraysTuples.ts, 0, 0))
>b : Symbol(b, Decl(mappedTypesArraysTuples.ts, 37, 34))
>b : Symbol(b, Decl(mappedTypesArraysTuples.ts, 45, 34))
>Box : Symbol(Box, Decl(mappedTypesArraysTuples.ts, 0, 0))
let y12 = unboxify(x12);
>y12 : Symbol(y12, Decl(mappedTypesArraysTuples.ts, 38, 3))
>unboxify : Symbol(unboxify, Decl(mappedTypesArraysTuples.ts, 27, 77))
>x12 : Symbol(x12, Decl(mappedTypesArraysTuples.ts, 37, 11))
>y12 : Symbol(y12, Decl(mappedTypesArraysTuples.ts, 46, 3))
>unboxify : Symbol(unboxify, Decl(mappedTypesArraysTuples.ts, 35, 36))
>x12 : Symbol(x12, Decl(mappedTypesArraysTuples.ts, 45, 11))
declare function nonpartial<T>(x: Partial<T>): T;
>nonpartial : Symbol(nonpartial, Decl(mappedTypesArraysTuples.ts, 38, 24))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 40, 28))
>x : Symbol(x, Decl(mappedTypesArraysTuples.ts, 40, 31))
>nonpartial : Symbol(nonpartial, Decl(mappedTypesArraysTuples.ts, 46, 24))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 48, 28))
>x : Symbol(x, Decl(mappedTypesArraysTuples.ts, 48, 31))
>Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 40, 28))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 40, 28))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 48, 28))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 48, 28))
declare let x20: [number | undefined, string?, ...boolean[]];
>x20 : Symbol(x20, Decl(mappedTypesArraysTuples.ts, 42, 11))
>x20 : Symbol(x20, Decl(mappedTypesArraysTuples.ts, 50, 11))
let y20 = nonpartial(x20);
>y20 : Symbol(y20, Decl(mappedTypesArraysTuples.ts, 43, 3))
>nonpartial : Symbol(nonpartial, Decl(mappedTypesArraysTuples.ts, 38, 24))
>x20 : Symbol(x20, Decl(mappedTypesArraysTuples.ts, 42, 11))
>y20 : Symbol(y20, Decl(mappedTypesArraysTuples.ts, 51, 3))
>nonpartial : Symbol(nonpartial, Decl(mappedTypesArraysTuples.ts, 46, 24))
>x20 : Symbol(x20, Decl(mappedTypesArraysTuples.ts, 50, 11))
declare let x21: (number | undefined)[];
>x21 : Symbol(x21, Decl(mappedTypesArraysTuples.ts, 45, 11))
>x21 : Symbol(x21, Decl(mappedTypesArraysTuples.ts, 53, 11))
let y21 = nonpartial(x21);
>y21 : Symbol(y21, Decl(mappedTypesArraysTuples.ts, 46, 3))
>nonpartial : Symbol(nonpartial, Decl(mappedTypesArraysTuples.ts, 38, 24))
>x21 : Symbol(x21, Decl(mappedTypesArraysTuples.ts, 45, 11))
>y21 : Symbol(y21, Decl(mappedTypesArraysTuples.ts, 54, 3))
>nonpartial : Symbol(nonpartial, Decl(mappedTypesArraysTuples.ts, 46, 24))
>x21 : Symbol(x21, Decl(mappedTypesArraysTuples.ts, 53, 11))
declare let x22: { a: number | undefined, b?: string[] };
>x22 : Symbol(x22, Decl(mappedTypesArraysTuples.ts, 48, 11))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 48, 18))
>b : Symbol(b, Decl(mappedTypesArraysTuples.ts, 48, 41))
>x22 : Symbol(x22, Decl(mappedTypesArraysTuples.ts, 56, 11))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 56, 18))
>b : Symbol(b, Decl(mappedTypesArraysTuples.ts, 56, 41))
let y22 = nonpartial(x22);
>y22 : Symbol(y22, Decl(mappedTypesArraysTuples.ts, 49, 3))
>nonpartial : Symbol(nonpartial, Decl(mappedTypesArraysTuples.ts, 38, 24))
>x22 : Symbol(x22, Decl(mappedTypesArraysTuples.ts, 48, 11))
>y22 : Symbol(y22, Decl(mappedTypesArraysTuples.ts, 57, 3))
>nonpartial : Symbol(nonpartial, Decl(mappedTypesArraysTuples.ts, 46, 24))
>x22 : Symbol(x22, Decl(mappedTypesArraysTuples.ts, 56, 11))
type Awaited<T> = T extends PromiseLike<infer U> ? U : T;
>Awaited : Symbol(Awaited, Decl(mappedTypesArraysTuples.ts, 49, 26))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 51, 13))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 51, 13))
>Awaited : Symbol(Awaited, Decl(mappedTypesArraysTuples.ts, 57, 26))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 59, 13))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 59, 13))
>PromiseLike : Symbol(PromiseLike, Decl(lib.es5.d.ts, --, --))
>U : Symbol(U, Decl(mappedTypesArraysTuples.ts, 51, 45))
>U : Symbol(U, Decl(mappedTypesArraysTuples.ts, 51, 45))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 51, 13))
>U : Symbol(U, Decl(mappedTypesArraysTuples.ts, 59, 45))
>U : Symbol(U, Decl(mappedTypesArraysTuples.ts, 59, 45))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 59, 13))
type Awaitified<T> = { [P in keyof T]: Awaited<T[P]> };
>Awaitified : Symbol(Awaitified, Decl(mappedTypesArraysTuples.ts, 51, 57))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 52, 16))
>P : Symbol(P, Decl(mappedTypesArraysTuples.ts, 52, 24))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 52, 16))
>Awaited : Symbol(Awaited, Decl(mappedTypesArraysTuples.ts, 49, 26))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 52, 16))
>P : Symbol(P, Decl(mappedTypesArraysTuples.ts, 52, 24))
>Awaitified : Symbol(Awaitified, Decl(mappedTypesArraysTuples.ts, 59, 57))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 60, 16))
>P : Symbol(P, Decl(mappedTypesArraysTuples.ts, 60, 24))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 60, 16))
>Awaited : Symbol(Awaited, Decl(mappedTypesArraysTuples.ts, 57, 26))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 60, 16))
>P : Symbol(P, Decl(mappedTypesArraysTuples.ts, 60, 24))
declare function all<T extends any[]>(...values: T): Promise<Awaitified<T>>;
>all : Symbol(all, Decl(mappedTypesArraysTuples.ts, 52, 55))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 54, 21))
>values : Symbol(values, Decl(mappedTypesArraysTuples.ts, 54, 38))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 54, 21))
>all : Symbol(all, Decl(mappedTypesArraysTuples.ts, 60, 55))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 62, 21))
>values : Symbol(values, Decl(mappedTypesArraysTuples.ts, 62, 38))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 62, 21))
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --))
>Awaitified : Symbol(Awaitified, Decl(mappedTypesArraysTuples.ts, 51, 57))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 54, 21))
>Awaitified : Symbol(Awaitified, Decl(mappedTypesArraysTuples.ts, 59, 57))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 62, 21))
function f1(a: number, b: Promise<number>, c: string[], d: Promise<string[]>) {
>f1 : Symbol(f1, Decl(mappedTypesArraysTuples.ts, 54, 76))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 56, 12))
>b : Symbol(b, Decl(mappedTypesArraysTuples.ts, 56, 22))
>f1 : Symbol(f1, Decl(mappedTypesArraysTuples.ts, 62, 76))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 64, 12))
>b : Symbol(b, Decl(mappedTypesArraysTuples.ts, 64, 22))
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --))
>c : Symbol(c, Decl(mappedTypesArraysTuples.ts, 56, 42))
>d : Symbol(d, Decl(mappedTypesArraysTuples.ts, 56, 55))
>c : Symbol(c, Decl(mappedTypesArraysTuples.ts, 64, 42))
>d : Symbol(d, Decl(mappedTypesArraysTuples.ts, 64, 55))
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --))
let x1 = all(a);
>x1 : Symbol(x1, Decl(mappedTypesArraysTuples.ts, 57, 7))
>all : Symbol(all, Decl(mappedTypesArraysTuples.ts, 52, 55))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 56, 12))
>x1 : Symbol(x1, Decl(mappedTypesArraysTuples.ts, 65, 7))
>all : Symbol(all, Decl(mappedTypesArraysTuples.ts, 60, 55))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 64, 12))
let x2 = all(a, b);
>x2 : Symbol(x2, Decl(mappedTypesArraysTuples.ts, 58, 7))
>all : Symbol(all, Decl(mappedTypesArraysTuples.ts, 52, 55))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 56, 12))
>b : Symbol(b, Decl(mappedTypesArraysTuples.ts, 56, 22))
>x2 : Symbol(x2, Decl(mappedTypesArraysTuples.ts, 66, 7))
>all : Symbol(all, Decl(mappedTypesArraysTuples.ts, 60, 55))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 64, 12))
>b : Symbol(b, Decl(mappedTypesArraysTuples.ts, 64, 22))
let x3 = all(a, b, c);
>x3 : Symbol(x3, Decl(mappedTypesArraysTuples.ts, 59, 7))
>all : Symbol(all, Decl(mappedTypesArraysTuples.ts, 52, 55))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 56, 12))
>b : Symbol(b, Decl(mappedTypesArraysTuples.ts, 56, 22))
>c : Symbol(c, Decl(mappedTypesArraysTuples.ts, 56, 42))
>x3 : Symbol(x3, Decl(mappedTypesArraysTuples.ts, 67, 7))
>all : Symbol(all, Decl(mappedTypesArraysTuples.ts, 60, 55))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 64, 12))
>b : Symbol(b, Decl(mappedTypesArraysTuples.ts, 64, 22))
>c : Symbol(c, Decl(mappedTypesArraysTuples.ts, 64, 42))
let x4 = all(a, b, c, d);
>x4 : Symbol(x4, Decl(mappedTypesArraysTuples.ts, 60, 7))
>all : Symbol(all, Decl(mappedTypesArraysTuples.ts, 52, 55))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 56, 12))
>b : Symbol(b, Decl(mappedTypesArraysTuples.ts, 56, 22))
>c : Symbol(c, Decl(mappedTypesArraysTuples.ts, 56, 42))
>d : Symbol(d, Decl(mappedTypesArraysTuples.ts, 56, 55))
>x4 : Symbol(x4, Decl(mappedTypesArraysTuples.ts, 68, 7))
>all : Symbol(all, Decl(mappedTypesArraysTuples.ts, 60, 55))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 64, 12))
>b : Symbol(b, Decl(mappedTypesArraysTuples.ts, 64, 22))
>c : Symbol(c, Decl(mappedTypesArraysTuples.ts, 64, 42))
>d : Symbol(d, Decl(mappedTypesArraysTuples.ts, 64, 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))
>f2 : Symbol(f2, Decl(mappedTypesArraysTuples.ts, 69, 1))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 71, 12))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 71, 29))
>Boxified : Symbol(Boxified, Decl(mappedTypesArraysTuples.ts, 0, 27))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 63, 12))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 71, 12))
let x: Box<any> | undefined = a.pop();
>x : Symbol(x, Decl(mappedTypesArraysTuples.ts, 64, 7))
>x : Symbol(x, Decl(mappedTypesArraysTuples.ts, 72, 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))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 71, 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))
>y : Symbol(y, Decl(mappedTypesArraysTuples.ts, 73, 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))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 71, 29))
>concat : Symbol(Array.concat, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 63, 29))
>a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 71, 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))
>ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 74, 1))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 78, 17))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 78, 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))
>U : Symbol(U, Decl(mappedTypesArraysTuples.ts, 78, 43))
>U : Symbol(U, Decl(mappedTypesArraysTuples.ts, 78, 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))
>Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 78, 59))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 79, 12))
>K : Symbol(K, Decl(mappedTypesArraysTuples.ts, 79, 20))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 79, 12))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 79, 12))
>K : Symbol(K, Decl(mappedTypesArraysTuples.ts, 79, 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))
>F : Symbol(F, Decl(mappedTypesArraysTuples.ts, 79, 42))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 81, 7))
>ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 74, 1))
>Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 78, 59))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 81, 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))
>R1 : Symbol(R1, Decl(mappedTypesArraysTuples.ts, 81, 35))
>F : Symbol(F, Decl(mappedTypesArraysTuples.ts, 79, 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))
>R2 : Symbol(R2, Decl(mappedTypesArraysTuples.ts, 82, 39))
>ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 74, 1))
>Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 78, 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))
>acceptArray : Symbol(acceptArray, Decl(mappedTypesArraysTuples.ts, 83, 57))
>arr : Symbol(arr, Decl(mappedTypesArraysTuples.ts, 87, 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))
>mapArray : Symbol(mapArray, Decl(mappedTypesArraysTuples.ts, 87, 47))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 88, 26))
>arr : Symbol(arr, Decl(mappedTypesArraysTuples.ts, 88, 43))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 88, 26))
>Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 78, 59))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 88, 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))
>acceptMappedArray : Symbol(acceptMappedArray, Decl(mappedTypesArraysTuples.ts, 88, 62))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 89, 27))
>arr : Symbol(arr, Decl(mappedTypesArraysTuples.ts, 89, 44))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 89, 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))
>acceptArray : Symbol(acceptArray, Decl(mappedTypesArraysTuples.ts, 83, 57))
>mapArray : Symbol(mapArray, Decl(mappedTypesArraysTuples.ts, 87, 47))
>arr : Symbol(arr, Decl(mappedTypesArraysTuples.ts, 89, 44))
}
// Repro from #26163
type Unconstrained<T> = ElementType<Mapped<T>>;
>Unconstrained : Symbol(Unconstrained, Decl(mappedTypesArraysTuples.ts, 83, 1))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 87, 19))
>ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 66, 1))
>Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 70, 59))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 87, 19))
>Unconstrained : Symbol(Unconstrained, Decl(mappedTypesArraysTuples.ts, 91, 1))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 95, 19))
>ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 74, 1))
>Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 78, 59))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 95, 19))
type T1 = Unconstrained<[string, number, boolean]>; // string | number | boolean
>T1 : Symbol(T1, Decl(mappedTypesArraysTuples.ts, 87, 47))
>Unconstrained : Symbol(Unconstrained, Decl(mappedTypesArraysTuples.ts, 83, 1))
>T1 : Symbol(T1, Decl(mappedTypesArraysTuples.ts, 95, 47))
>Unconstrained : Symbol(Unconstrained, Decl(mappedTypesArraysTuples.ts, 91, 1))
type Constrained<T extends any[]> = ElementType<Mapped<T>>;
>Constrained : Symbol(Constrained, Decl(mappedTypesArraysTuples.ts, 88, 51))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 90, 17))
>ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 66, 1))
>Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 70, 59))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 90, 17))
>Constrained : Symbol(Constrained, Decl(mappedTypesArraysTuples.ts, 96, 51))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 98, 17))
>ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 74, 1))
>Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 78, 59))
>T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 98, 17))
type T2 = Constrained<[string, number, boolean]>; // string | number | boolean
>T2 : Symbol(T2, Decl(mappedTypesArraysTuples.ts, 90, 59))
>Constrained : Symbol(Constrained, Decl(mappedTypesArraysTuples.ts, 88, 51))
>T2 : Symbol(T2, Decl(mappedTypesArraysTuples.ts, 98, 59))
>Constrained : Symbol(Constrained, Decl(mappedTypesArraysTuples.ts, 96, 51))
@@ -68,6 +68,24 @@ type B = { b: string };
type T40 = Boxified<A | A[] | ReadonlyArray<A> | [A, B] | string | string[]>;
>T40 : string | Box<string>[] | Boxified<A> | Box<A>[] | readonly Box<A>[] | [Box<A>, Box<B>]
type ReadWrite<T> = { -readonly [P in keyof T] : T[P] };
>ReadWrite : ReadWrite<T>
type T50 = Readonly<string[]>;
>T50 : readonly string[]
type T51 = Readonly<[number, number]>;
>T51 : readonly [number, number]
type T52 = Partial<Readonly<string[]>>;
>T52 : readonly (string | undefined)[]
type T53 = Readonly<Partial<string[]>>;
>T53 : readonly (string | undefined)[]
type T54 = ReadWrite<Required<T53>>;
>T54 : string[]
declare function unboxify<T>(x: Boxified<T>): T;
>unboxify : <T>(x: Boxified<T>) => T
>x : Boxified<T>
@@ -0,0 +1,47 @@
tests/cases/conformance/types/tuple/readonlyArraysAndTuples.ts(10,5): error TS2740: Type 'readonly string[]' is missing the following properties from type 'string[]': pop, push, reverse, shift, and 3 more.
tests/cases/conformance/types/tuple/readonlyArraysAndTuples.ts(12,5): error TS2740: Type 'readonly [string, string]' is missing the following properties from type 'string[]': pop, push, reverse, shift, and 3 more.
tests/cases/conformance/types/tuple/readonlyArraysAndTuples.ts(16,5): error TS2739: Type 'string[]' is missing the following properties from type '[string, string]': 0, 1
tests/cases/conformance/types/tuple/readonlyArraysAndTuples.ts(17,5): error TS2740: Type 'readonly string[]' is missing the following properties from type '[string, string]': 0, 1, pop, push, and 5 more.
tests/cases/conformance/types/tuple/readonlyArraysAndTuples.ts(18,5): error TS2740: Type 'readonly [string, string]' is missing the following properties from type '[string, string]': pop, push, reverse, shift, and 3 more.
tests/cases/conformance/types/tuple/readonlyArraysAndTuples.ts(19,5): error TS2739: Type 'string[]' is missing the following properties from type 'readonly [string, string]': 0, 1
tests/cases/conformance/types/tuple/readonlyArraysAndTuples.ts(20,5): error TS2739: Type 'readonly string[]' is missing the following properties from type 'readonly [string, string]': 0, 1
==== tests/cases/conformance/types/tuple/readonlyArraysAndTuples.ts (7 errors) ====
type T10 = string[];
type T11 = Array<string>;
type T12 = readonly string[];
type T13 = ReadonlyArray<string>;
type T20 = [number, number];
type T21 = readonly [number, number];
function f1(ma: string[], ra: readonly string[], mt: [string, string], rt: readonly [string, string]) {
ma = ra; // Error
~~
!!! error TS2740: Type 'readonly string[]' is missing the following properties from type 'string[]': pop, push, reverse, shift, and 3 more.
ma = mt;
ma = rt; // Error
~~
!!! error TS2740: Type 'readonly [string, string]' is missing the following properties from type 'string[]': pop, push, reverse, shift, and 3 more.
ra = ma;
ra = mt;
ra = rt;
mt = ma; // Error
~~
!!! error TS2739: Type 'string[]' is missing the following properties from type '[string, string]': 0, 1
mt = ra; // Error
~~
!!! error TS2740: Type 'readonly string[]' is missing the following properties from type '[string, string]': 0, 1, pop, push, and 5 more.
mt = rt; // Error
~~
!!! error TS2740: Type 'readonly [string, string]' is missing the following properties from type '[string, string]': pop, push, reverse, shift, and 3 more.
rt = ma; // Error
~~
!!! error TS2739: Type 'string[]' is missing the following properties from type 'readonly [string, string]': 0, 1
rt = ra; // Error
~~
!!! error TS2739: Type 'readonly string[]' is missing the following properties from type 'readonly [string, string]': 0, 1
rt = mt;
}
@@ -0,0 +1,41 @@
//// [readonlyArraysAndTuples.ts]
type T10 = string[];
type T11 = Array<string>;
type T12 = readonly string[];
type T13 = ReadonlyArray<string>;
type T20 = [number, number];
type T21 = readonly [number, number];
function f1(ma: string[], ra: readonly string[], mt: [string, string], rt: readonly [string, string]) {
ma = ra; // Error
ma = mt;
ma = rt; // Error
ra = ma;
ra = mt;
ra = rt;
mt = ma; // Error
mt = ra; // Error
mt = rt; // Error
rt = ma; // Error
rt = ra; // Error
rt = mt;
}
//// [readonlyArraysAndTuples.js]
"use strict";
function f1(ma, ra, mt, rt) {
ma = ra; // Error
ma = mt;
ma = rt; // Error
ra = ma;
ra = mt;
ra = rt;
mt = ma; // Error
mt = ra; // Error
mt = rt; // Error
rt = ma; // Error
rt = ra; // Error
rt = mt;
}
@@ -0,0 +1,77 @@
=== tests/cases/conformance/types/tuple/readonlyArraysAndTuples.ts ===
type T10 = string[];
>T10 : Symbol(T10, Decl(readonlyArraysAndTuples.ts, 0, 0))
type T11 = Array<string>;
>T11 : Symbol(T11, Decl(readonlyArraysAndTuples.ts, 0, 20))
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
type T12 = readonly string[];
>T12 : Symbol(T12, Decl(readonlyArraysAndTuples.ts, 1, 25))
type T13 = ReadonlyArray<string>;
>T13 : Symbol(T13, Decl(readonlyArraysAndTuples.ts, 2, 29))
>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --))
type T20 = [number, number];
>T20 : Symbol(T20, Decl(readonlyArraysAndTuples.ts, 3, 33))
type T21 = readonly [number, number];
>T21 : Symbol(T21, Decl(readonlyArraysAndTuples.ts, 5, 28))
function f1(ma: string[], ra: readonly string[], mt: [string, string], rt: readonly [string, string]) {
>f1 : Symbol(f1, Decl(readonlyArraysAndTuples.ts, 6, 37))
>ma : Symbol(ma, Decl(readonlyArraysAndTuples.ts, 8, 12))
>ra : Symbol(ra, Decl(readonlyArraysAndTuples.ts, 8, 25))
>mt : Symbol(mt, Decl(readonlyArraysAndTuples.ts, 8, 48))
>rt : Symbol(rt, Decl(readonlyArraysAndTuples.ts, 8, 70))
ma = ra; // Error
>ma : Symbol(ma, Decl(readonlyArraysAndTuples.ts, 8, 12))
>ra : Symbol(ra, Decl(readonlyArraysAndTuples.ts, 8, 25))
ma = mt;
>ma : Symbol(ma, Decl(readonlyArraysAndTuples.ts, 8, 12))
>mt : Symbol(mt, Decl(readonlyArraysAndTuples.ts, 8, 48))
ma = rt; // Error
>ma : Symbol(ma, Decl(readonlyArraysAndTuples.ts, 8, 12))
>rt : Symbol(rt, Decl(readonlyArraysAndTuples.ts, 8, 70))
ra = ma;
>ra : Symbol(ra, Decl(readonlyArraysAndTuples.ts, 8, 25))
>ma : Symbol(ma, Decl(readonlyArraysAndTuples.ts, 8, 12))
ra = mt;
>ra : Symbol(ra, Decl(readonlyArraysAndTuples.ts, 8, 25))
>mt : Symbol(mt, Decl(readonlyArraysAndTuples.ts, 8, 48))
ra = rt;
>ra : Symbol(ra, Decl(readonlyArraysAndTuples.ts, 8, 25))
>rt : Symbol(rt, Decl(readonlyArraysAndTuples.ts, 8, 70))
mt = ma; // Error
>mt : Symbol(mt, Decl(readonlyArraysAndTuples.ts, 8, 48))
>ma : Symbol(ma, Decl(readonlyArraysAndTuples.ts, 8, 12))
mt = ra; // Error
>mt : Symbol(mt, Decl(readonlyArraysAndTuples.ts, 8, 48))
>ra : Symbol(ra, Decl(readonlyArraysAndTuples.ts, 8, 25))
mt = rt; // Error
>mt : Symbol(mt, Decl(readonlyArraysAndTuples.ts, 8, 48))
>rt : Symbol(rt, Decl(readonlyArraysAndTuples.ts, 8, 70))
rt = ma; // Error
>rt : Symbol(rt, Decl(readonlyArraysAndTuples.ts, 8, 70))
>ma : Symbol(ma, Decl(readonlyArraysAndTuples.ts, 8, 12))
rt = ra; // Error
>rt : Symbol(rt, Decl(readonlyArraysAndTuples.ts, 8, 70))
>ra : Symbol(ra, Decl(readonlyArraysAndTuples.ts, 8, 25))
rt = mt;
>rt : Symbol(rt, Decl(readonlyArraysAndTuples.ts, 8, 70))
>mt : Symbol(mt, Decl(readonlyArraysAndTuples.ts, 8, 48))
}
@@ -0,0 +1,87 @@
=== tests/cases/conformance/types/tuple/readonlyArraysAndTuples.ts ===
type T10 = string[];
>T10 : string[]
type T11 = Array<string>;
>T11 : string[]
type T12 = readonly string[];
>T12 : readonly string[]
type T13 = ReadonlyArray<string>;
>T13 : readonly string[]
type T20 = [number, number];
>T20 : [number, number]
type T21 = readonly [number, number];
>T21 : readonly [number, number]
function f1(ma: string[], ra: readonly string[], mt: [string, string], rt: readonly [string, string]) {
>f1 : (ma: string[], ra: readonly string[], mt: [string, string], rt: readonly [string, string]) => void
>ma : string[]
>ra : readonly string[]
>mt : [string, string]
>rt : readonly [string, string]
ma = ra; // Error
>ma = ra : readonly string[]
>ma : string[]
>ra : readonly string[]
ma = mt;
>ma = mt : [string, string]
>ma : string[]
>mt : [string, string]
ma = rt; // Error
>ma = rt : readonly [string, string]
>ma : string[]
>rt : readonly [string, string]
ra = ma;
>ra = ma : string[]
>ra : readonly string[]
>ma : string[]
ra = mt;
>ra = mt : [string, string]
>ra : readonly string[]
>mt : [string, string]
ra = rt;
>ra = rt : readonly [string, string]
>ra : readonly string[]
>rt : readonly [string, string]
mt = ma; // Error
>mt = ma : string[]
>mt : [string, string]
>ma : string[]
mt = ra; // Error
>mt = ra : readonly string[]
>mt : [string, string]
>ra : readonly string[]
mt = rt; // Error
>mt = rt : readonly [string, string]
>mt : [string, string]
>rt : readonly [string, string]
rt = ma; // Error
>rt = ma : string[]
>rt : readonly [string, string]
>ma : string[]
rt = ra; // Error
>rt = ra : readonly string[]
>rt : readonly [string, string]
>ra : readonly string[]
rt = mt;
>rt = mt : [string, string]
>rt : readonly [string, string]
>mt : [string, string]
}