@@ -245,3 +245,86 @@ function f1(a: number, b: Promise<number>, c: string[], d: Promise<string[]>) {
245
245
>d : Symbol(d, Decl(mappedTypesArraysTuples.ts, 56, 55))
246
246
}
247
247
248
+ function f2<T extends any[]>(a: Boxified<T>) {
249
+ >f2 : Symbol(f2, Decl(mappedTypesArraysTuples.ts, 61, 1))
250
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 63, 12))
251
+ >a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 63, 29))
252
+ >Boxified : Symbol(Boxified, Decl(mappedTypesArraysTuples.ts, 0, 27))
253
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 63, 12))
254
+
255
+ let x: Box<any> | undefined = a.pop();
256
+ >x : Symbol(x, Decl(mappedTypesArraysTuples.ts, 64, 7))
257
+ >Box : Symbol(Box, Decl(mappedTypesArraysTuples.ts, 0, 0))
258
+ >a.pop : Symbol(Array.pop, Decl(lib.es5.d.ts, --, --))
259
+ >a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 63, 29))
260
+ >pop : Symbol(Array.pop, Decl(lib.es5.d.ts, --, --))
261
+
262
+ let y: Box<any>[] = a.concat(a);
263
+ >y : Symbol(y, Decl(mappedTypesArraysTuples.ts, 65, 7))
264
+ >Box : Symbol(Box, Decl(mappedTypesArraysTuples.ts, 0, 0))
265
+ >a.concat : Symbol(Array.concat, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
266
+ >a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 63, 29))
267
+ >concat : Symbol(Array.concat, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
268
+ >a : Symbol(a, Decl(mappedTypesArraysTuples.ts, 63, 29))
269
+ }
270
+
271
+ // Repro from #26163
272
+
273
+ type ElementType<T> = T extends Array<infer U> ? U : never;
274
+ >ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 66, 1))
275
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 70, 17))
276
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 70, 17))
277
+ >Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
278
+ >U : Symbol(U, Decl(mappedTypesArraysTuples.ts, 70, 43))
279
+ >U : Symbol(U, Decl(mappedTypesArraysTuples.ts, 70, 43))
280
+
281
+ type Mapped<T> = { [K in keyof T]: T[K] };
282
+ >Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 70, 59))
283
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 71, 12))
284
+ >K : Symbol(K, Decl(mappedTypesArraysTuples.ts, 71, 20))
285
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 71, 12))
286
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 71, 12))
287
+ >K : Symbol(K, Decl(mappedTypesArraysTuples.ts, 71, 20))
288
+
289
+ type F<T> = ElementType<Mapped<T>>;
290
+ >F : Symbol(F, Decl(mappedTypesArraysTuples.ts, 71, 42))
291
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 73, 7))
292
+ >ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 66, 1))
293
+ >Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 70, 59))
294
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 73, 7))
295
+
296
+ type R1 = F<[string, number, boolean]>; // string | number | boolean
297
+ >R1 : Symbol(R1, Decl(mappedTypesArraysTuples.ts, 73, 35))
298
+ >F : Symbol(F, Decl(mappedTypesArraysTuples.ts, 71, 42))
299
+
300
+ type R2 = ElementType<Mapped<[string, number, boolean]>>; // string | number | boolean
301
+ >R2 : Symbol(R2, Decl(mappedTypesArraysTuples.ts, 74, 39))
302
+ >ElementType : Symbol(ElementType, Decl(mappedTypesArraysTuples.ts, 66, 1))
303
+ >Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 70, 59))
304
+
305
+ // Repro from #26163
306
+
307
+ declare function acceptArray(arr: any[]): void;
308
+ >acceptArray : Symbol(acceptArray, Decl(mappedTypesArraysTuples.ts, 75, 57))
309
+ >arr : Symbol(arr, Decl(mappedTypesArraysTuples.ts, 79, 29))
310
+
311
+ declare function mapArray<T extends any[]>(arr: T): Mapped<T>;
312
+ >mapArray : Symbol(mapArray, Decl(mappedTypesArraysTuples.ts, 79, 47))
313
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 80, 26))
314
+ >arr : Symbol(arr, Decl(mappedTypesArraysTuples.ts, 80, 43))
315
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 80, 26))
316
+ >Mapped : Symbol(Mapped, Decl(mappedTypesArraysTuples.ts, 70, 59))
317
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 80, 26))
318
+
319
+ function acceptMappedArray<T extends any[]>(arr: T) {
320
+ >acceptMappedArray : Symbol(acceptMappedArray, Decl(mappedTypesArraysTuples.ts, 80, 62))
321
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 81, 27))
322
+ >arr : Symbol(arr, Decl(mappedTypesArraysTuples.ts, 81, 44))
323
+ >T : Symbol(T, Decl(mappedTypesArraysTuples.ts, 81, 27))
324
+
325
+ acceptArray(mapArray(arr));
326
+ >acceptArray : Symbol(acceptArray, Decl(mappedTypesArraysTuples.ts, 75, 57))
327
+ >mapArray : Symbol(mapArray, Decl(mappedTypesArraysTuples.ts, 79, 47))
328
+ >arr : Symbol(arr, Decl(mappedTypesArraysTuples.ts, 81, 44))
329
+ }
330
+
0 commit comments