@@ -459,3 +459,84 @@ let x: Foo[] = bar(() => !!true ? [{ state: State.A }] : [{ state: State.B }]);
459
459
>State : Symbol(State, Decl(inferFromGenericFunctionReturnTypes3.ts, 174, 56))
460
460
>B : Symbol(State.B, Decl(inferFromGenericFunctionReturnTypes3.ts, 176, 15))
461
461
462
+ // Repros from #31443
463
+
464
+ enum Enum { A, B }
465
+ >Enum : Symbol(Enum, Decl(inferFromGenericFunctionReturnTypes3.ts, 179, 79))
466
+ >A : Symbol(Enum.A, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 11))
467
+ >B : Symbol(Enum.B, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 14))
468
+
469
+ class ClassWithConvert<T> {
470
+ >ClassWithConvert : Symbol(ClassWithConvert, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 18))
471
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 185, 23))
472
+
473
+ constructor(val: T) { }
474
+ >val : Symbol(val, Decl(inferFromGenericFunctionReturnTypes3.ts, 186, 14))
475
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 185, 23))
476
+
477
+ convert(converter: { to: (v: T) => T; }) { }
478
+ >convert : Symbol(ClassWithConvert.convert, Decl(inferFromGenericFunctionReturnTypes3.ts, 186, 25))
479
+ >converter : Symbol(converter, Decl(inferFromGenericFunctionReturnTypes3.ts, 187, 10))
480
+ >to : Symbol(to, Decl(inferFromGenericFunctionReturnTypes3.ts, 187, 22))
481
+ >v : Symbol(v, Decl(inferFromGenericFunctionReturnTypes3.ts, 187, 28))
482
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 185, 23))
483
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 185, 23))
484
+ }
485
+
486
+ function fn<T>(arg: ClassWithConvert<T>, f: () => ClassWithConvert<T>) { }
487
+ >fn : Symbol(fn, Decl(inferFromGenericFunctionReturnTypes3.ts, 188, 1))
488
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 190, 12))
489
+ >arg : Symbol(arg, Decl(inferFromGenericFunctionReturnTypes3.ts, 190, 15))
490
+ >ClassWithConvert : Symbol(ClassWithConvert, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 18))
491
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 190, 12))
492
+ >f : Symbol(f, Decl(inferFromGenericFunctionReturnTypes3.ts, 190, 40))
493
+ >ClassWithConvert : Symbol(ClassWithConvert, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 18))
494
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 190, 12))
495
+
496
+ fn(new ClassWithConvert(Enum.A), () => new ClassWithConvert(Enum.A));
497
+ >fn : Symbol(fn, Decl(inferFromGenericFunctionReturnTypes3.ts, 188, 1))
498
+ >ClassWithConvert : Symbol(ClassWithConvert, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 18))
499
+ >Enum.A : Symbol(Enum.A, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 11))
500
+ >Enum : Symbol(Enum, Decl(inferFromGenericFunctionReturnTypes3.ts, 179, 79))
501
+ >A : Symbol(Enum.A, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 11))
502
+ >ClassWithConvert : Symbol(ClassWithConvert, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 18))
503
+ >Enum.A : Symbol(Enum.A, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 11))
504
+ >Enum : Symbol(Enum, Decl(inferFromGenericFunctionReturnTypes3.ts, 179, 79))
505
+ >A : Symbol(Enum.A, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 11))
506
+
507
+ type Func<T> = (x: T) => T;
508
+ >Func : Symbol(Func, Decl(inferFromGenericFunctionReturnTypes3.ts, 191, 69))
509
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 193, 10))
510
+ >x : Symbol(x, Decl(inferFromGenericFunctionReturnTypes3.ts, 193, 16))
511
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 193, 10))
512
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 193, 10))
513
+
514
+ declare function makeFoo<T>(x: T): Func<T>;
515
+ >makeFoo : Symbol(makeFoo, Decl(inferFromGenericFunctionReturnTypes3.ts, 193, 27))
516
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 195, 25))
517
+ >x : Symbol(x, Decl(inferFromGenericFunctionReturnTypes3.ts, 195, 28))
518
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 195, 25))
519
+ >Func : Symbol(Func, Decl(inferFromGenericFunctionReturnTypes3.ts, 191, 69))
520
+ >T : Symbol(T, Decl(inferFromGenericFunctionReturnTypes3.ts, 195, 25))
521
+
522
+ declare function baz<U>(x: Func<U>, y: Func<U>): void;
523
+ >baz : Symbol(baz, Decl(inferFromGenericFunctionReturnTypes3.ts, 195, 43))
524
+ >U : Symbol(U, Decl(inferFromGenericFunctionReturnTypes3.ts, 196, 21))
525
+ >x : Symbol(x, Decl(inferFromGenericFunctionReturnTypes3.ts, 196, 24))
526
+ >Func : Symbol(Func, Decl(inferFromGenericFunctionReturnTypes3.ts, 191, 69))
527
+ >U : Symbol(U, Decl(inferFromGenericFunctionReturnTypes3.ts, 196, 21))
528
+ >y : Symbol(y, Decl(inferFromGenericFunctionReturnTypes3.ts, 196, 35))
529
+ >Func : Symbol(Func, Decl(inferFromGenericFunctionReturnTypes3.ts, 191, 69))
530
+ >U : Symbol(U, Decl(inferFromGenericFunctionReturnTypes3.ts, 196, 21))
531
+
532
+ baz(makeFoo(Enum.A), makeFoo(Enum.A));
533
+ >baz : Symbol(baz, Decl(inferFromGenericFunctionReturnTypes3.ts, 195, 43))
534
+ >makeFoo : Symbol(makeFoo, Decl(inferFromGenericFunctionReturnTypes3.ts, 193, 27))
535
+ >Enum.A : Symbol(Enum.A, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 11))
536
+ >Enum : Symbol(Enum, Decl(inferFromGenericFunctionReturnTypes3.ts, 179, 79))
537
+ >A : Symbol(Enum.A, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 11))
538
+ >makeFoo : Symbol(makeFoo, Decl(inferFromGenericFunctionReturnTypes3.ts, 193, 27))
539
+ >Enum.A : Symbol(Enum.A, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 11))
540
+ >Enum : Symbol(Enum, Decl(inferFromGenericFunctionReturnTypes3.ts, 179, 79))
541
+ >A : Symbol(Enum.A, Decl(inferFromGenericFunctionReturnTypes3.ts, 183, 11))
542
+
0 commit comments