@@ -517,3 +517,47 @@ export class c {
517
517
}
518
518
}
519
519
520
+ // Repro from #31385
521
+
522
+ type Foo<T> = { [key: string]: { [K in keyof T]: K }[keyof T] };
523
+ >Foo : Symbol(Foo, Decl(keyofAndIndexedAccess2.ts, 145, 1))
524
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 149, 9))
525
+ >key : Symbol(key, Decl(keyofAndIndexedAccess2.ts, 149, 17))
526
+ >K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 149, 34))
527
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 149, 9))
528
+ >K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 149, 34))
529
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 149, 9))
530
+
531
+ type Bar<T> = { [key: string]: { [K in keyof T]: [K] }[keyof T] };
532
+ >Bar : Symbol(Bar, Decl(keyofAndIndexedAccess2.ts, 149, 64))
533
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 151, 9))
534
+ >key : Symbol(key, Decl(keyofAndIndexedAccess2.ts, 151, 17))
535
+ >K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 151, 34))
536
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 151, 9))
537
+ >K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 151, 34))
538
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 151, 9))
539
+
540
+ type Baz<T, Q extends Foo<T>> = { [K in keyof Q]: T[Q[K]] };
541
+ >Baz : Symbol(Baz, Decl(keyofAndIndexedAccess2.ts, 151, 66))
542
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 153, 9))
543
+ >Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 153, 11))
544
+ >Foo : Symbol(Foo, Decl(keyofAndIndexedAccess2.ts, 145, 1))
545
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 153, 9))
546
+ >K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 153, 35))
547
+ >Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 153, 11))
548
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 153, 9))
549
+ >Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 153, 11))
550
+ >K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 153, 35))
551
+
552
+ type Qux<T, Q extends Bar<T>> = { [K in keyof Q]: T[Q[K]["0"]] };
553
+ >Qux : Symbol(Qux, Decl(keyofAndIndexedAccess2.ts, 153, 60))
554
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 155, 9))
555
+ >Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 155, 11))
556
+ >Bar : Symbol(Bar, Decl(keyofAndIndexedAccess2.ts, 149, 64))
557
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 155, 9))
558
+ >K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 155, 35))
559
+ >Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 155, 11))
560
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 155, 9))
561
+ >Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 155, 11))
562
+ >K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 155, 35))
563
+
0 commit comments