diff --git a/tests/baselines/reference/mappedArrayTupleIntersections.symbols b/tests/baselines/reference/mappedArrayTupleIntersections.symbols new file mode 100644 index 0000000000000..354bdb031d901 --- /dev/null +++ b/tests/baselines/reference/mappedArrayTupleIntersections.symbols @@ -0,0 +1,62 @@ +//// [tests/cases/compiler/mappedArrayTupleIntersections.ts] //// + +=== mappedArrayTupleIntersections.ts === +type Box = { value: T }; +>Box : Symbol(Box, Decl(mappedArrayTupleIntersections.ts, 0, 0)) +>T : Symbol(T, Decl(mappedArrayTupleIntersections.ts, 0, 9)) +>value : Symbol(value, Decl(mappedArrayTupleIntersections.ts, 0, 15)) +>T : Symbol(T, Decl(mappedArrayTupleIntersections.ts, 0, 9)) + +type Boxify = { [K in keyof T]: Box }; +>Boxify : Symbol(Boxify, Decl(mappedArrayTupleIntersections.ts, 0, 27)) +>T : Symbol(T, Decl(mappedArrayTupleIntersections.ts, 1, 12)) +>K : Symbol(K, Decl(mappedArrayTupleIntersections.ts, 1, 20)) +>T : Symbol(T, Decl(mappedArrayTupleIntersections.ts, 1, 12)) +>Box : Symbol(Box, Decl(mappedArrayTupleIntersections.ts, 0, 0)) +>T : Symbol(T, Decl(mappedArrayTupleIntersections.ts, 1, 12)) +>K : Symbol(K, Decl(mappedArrayTupleIntersections.ts, 1, 20)) + +type T1 = Boxify; +>T1 : Symbol(T1, Decl(mappedArrayTupleIntersections.ts, 1, 47)) +>Boxify : Symbol(Boxify, Decl(mappedArrayTupleIntersections.ts, 0, 27)) + +type T2 = Boxify<[string, string]>; +>T2 : Symbol(T2, Decl(mappedArrayTupleIntersections.ts, 3, 27)) +>Boxify : Symbol(Boxify, Decl(mappedArrayTupleIntersections.ts, 0, 27)) + +type T3 = Boxify; +>T3 : Symbol(T3, Decl(mappedArrayTupleIntersections.ts, 4, 35)) +>Boxify : Symbol(Boxify, Decl(mappedArrayTupleIntersections.ts, 0, 27)) + +type T4 = Boxify; +>T4 : Symbol(T4, Decl(mappedArrayTupleIntersections.ts, 5, 39)) +>Boxify : Symbol(Boxify, Decl(mappedArrayTupleIntersections.ts, 0, 27)) + +type T5 = Boxify; +>T5 : Symbol(T5, Decl(mappedArrayTupleIntersections.ts, 6, 46)) +>Boxify : Symbol(Boxify, Decl(mappedArrayTupleIntersections.ts, 0, 27)) +>x : Symbol(x, Decl(mappedArrayTupleIntersections.ts, 7, 29)) + +// https://github.com/microsoft/TypeScript/issues/57744 + +type MustBeArray = T; +>MustBeArray : Symbol(MustBeArray, Decl(mappedArrayTupleIntersections.ts, 7, 43)) +>T : Symbol(T, Decl(mappedArrayTupleIntersections.ts, 11, 17)) +>T : Symbol(T, Decl(mappedArrayTupleIntersections.ts, 11, 17)) + +type Hmm = T extends number[] ? +>Hmm : Symbol(Hmm, Decl(mappedArrayTupleIntersections.ts, 11, 38)) +>T : Symbol(T, Decl(mappedArrayTupleIntersections.ts, 13, 9)) +>T : Symbol(T, Decl(mappedArrayTupleIntersections.ts, 13, 9)) + + MustBeArray<{ [I in keyof T]: 1 }> : +>MustBeArray : Symbol(MustBeArray, Decl(mappedArrayTupleIntersections.ts, 7, 43)) +>I : Symbol(I, Decl(mappedArrayTupleIntersections.ts, 14, 19)) +>T : Symbol(T, Decl(mappedArrayTupleIntersections.ts, 13, 9)) + + never; + +type X = Hmm<[3, 4, 5]>; +>X : Symbol(X, Decl(mappedArrayTupleIntersections.ts, 15, 10)) +>Hmm : Symbol(Hmm, Decl(mappedArrayTupleIntersections.ts, 11, 38)) + diff --git a/tests/baselines/reference/mappedArrayTupleIntersections.types b/tests/baselines/reference/mappedArrayTupleIntersections.types new file mode 100644 index 0000000000000..db4a465853fc9 --- /dev/null +++ b/tests/baselines/reference/mappedArrayTupleIntersections.types @@ -0,0 +1,40 @@ +//// [tests/cases/compiler/mappedArrayTupleIntersections.ts] //// + +=== mappedArrayTupleIntersections.ts === +type Box = { value: T }; +>Box : Box +>value : T + +type Boxify = { [K in keyof T]: Box }; +>Boxify : Boxify + +type T1 = Boxify; +>T1 : Box[] + +type T2 = Boxify<[string, string]>; +>T2 : [Box, Box] + +type T3 = Boxify; +>T3 : Box[] & Box[] + +type T4 = Boxify; +>T4 : Box[] & [Box, Box] + +type T5 = Boxify; +>T5 : Boxify +>x : string + +// https://github.com/microsoft/TypeScript/issues/57744 + +type MustBeArray = T; +>MustBeArray : T + +type Hmm = T extends number[] ? +>Hmm : Hmm + + MustBeArray<{ [I in keyof T]: 1 }> : + never; + +type X = Hmm<[3, 4, 5]>; +>X : [1, 1, 1] + diff --git a/tests/cases/compiler/mappedArrayTupleIntersections.ts b/tests/cases/compiler/mappedArrayTupleIntersections.ts new file mode 100644 index 0000000000000..4947e71a5d39c --- /dev/null +++ b/tests/cases/compiler/mappedArrayTupleIntersections.ts @@ -0,0 +1,21 @@ +// @strict: true +// @noEmit: true + +type Box = { value: T }; +type Boxify = { [K in keyof T]: Box }; + +type T1 = Boxify; +type T2 = Boxify<[string, string]>; +type T3 = Boxify; +type T4 = Boxify; +type T5 = Boxify; + +// https://github.com/microsoft/TypeScript/issues/57744 + +type MustBeArray = T; + +type Hmm = T extends number[] ? + MustBeArray<{ [I in keyof T]: 1 }> : + never; + +type X = Hmm<[3, 4, 5]>;