@@ -753,3 +753,74 @@ function func<K extends keyof MyObj>(k: K): MyObj[K]['name'] | undefined {
753
753
>undefined : Symbol(undefined)
754
754
}
755
755
756
+ // Repro from #48157
757
+
758
+ interface Foo {
759
+ >Foo : Symbol(Foo, Decl(correlatedUnions.ts, 209, 1))
760
+
761
+ bar?: string
762
+ >bar : Symbol(Foo.bar, Decl(correlatedUnions.ts, 213, 15))
763
+ }
764
+
765
+ function foo<T extends keyof Foo>(prop: T, f: Required<Foo>) {
766
+ >foo : Symbol(foo, Decl(correlatedUnions.ts, 215, 1))
767
+ >T : Symbol(T, Decl(correlatedUnions.ts, 217, 13))
768
+ >Foo : Symbol(Foo, Decl(correlatedUnions.ts, 209, 1))
769
+ >prop : Symbol(prop, Decl(correlatedUnions.ts, 217, 34))
770
+ >T : Symbol(T, Decl(correlatedUnions.ts, 217, 13))
771
+ >f : Symbol(f, Decl(correlatedUnions.ts, 217, 42))
772
+ >Required : Symbol(Required, Decl(lib.es5.d.ts, --, --))
773
+ >Foo : Symbol(Foo, Decl(correlatedUnions.ts, 209, 1))
774
+
775
+ bar(f[prop]);
776
+ >bar : Symbol(bar, Decl(correlatedUnions.ts, 219, 1))
777
+ >f : Symbol(f, Decl(correlatedUnions.ts, 217, 42))
778
+ >prop : Symbol(prop, Decl(correlatedUnions.ts, 217, 34))
779
+ }
780
+
781
+ declare function bar(t: string): void;
782
+ >bar : Symbol(bar, Decl(correlatedUnions.ts, 219, 1))
783
+ >t : Symbol(t, Decl(correlatedUnions.ts, 221, 21))
784
+
785
+ // Repro from #48246
786
+
787
+ declare function makeCompleteLookupMapping<T extends ReadonlyArray<any>, Attr extends keyof T[number]>(
788
+ >makeCompleteLookupMapping : Symbol(makeCompleteLookupMapping, Decl(correlatedUnions.ts, 221, 38))
789
+ >T : Symbol(T, Decl(correlatedUnions.ts, 225, 43))
790
+ >ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --))
791
+ >Attr : Symbol(Attr, Decl(correlatedUnions.ts, 225, 72))
792
+ >T : Symbol(T, Decl(correlatedUnions.ts, 225, 43))
793
+
794
+ ops: T, attr: Attr): { [Item in T[number]as Item[Attr]]: Item };
795
+ >ops : Symbol(ops, Decl(correlatedUnions.ts, 225, 103))
796
+ >T : Symbol(T, Decl(correlatedUnions.ts, 225, 43))
797
+ >attr : Symbol(attr, Decl(correlatedUnions.ts, 226, 11))
798
+ >Attr : Symbol(Attr, Decl(correlatedUnions.ts, 225, 72))
799
+ >Item : Symbol(Item, Decl(correlatedUnions.ts, 226, 28))
800
+ >T : Symbol(T, Decl(correlatedUnions.ts, 225, 43))
801
+ >Item : Symbol(Item, Decl(correlatedUnions.ts, 226, 28))
802
+ >Attr : Symbol(Attr, Decl(correlatedUnions.ts, 225, 72))
803
+ >Item : Symbol(Item, Decl(correlatedUnions.ts, 226, 28))
804
+
805
+ const ALL_BARS = [{ name: 'a'}, {name: 'b'}] as const;
806
+ >ALL_BARS : Symbol(ALL_BARS, Decl(correlatedUnions.ts, 228, 5))
807
+ >name : Symbol(name, Decl(correlatedUnions.ts, 228, 19))
808
+ >name : Symbol(name, Decl(correlatedUnions.ts, 228, 33))
809
+ >const : Symbol(const)
810
+
811
+ const BAR_LOOKUP = makeCompleteLookupMapping(ALL_BARS, 'name');
812
+ >BAR_LOOKUP : Symbol(BAR_LOOKUP, Decl(correlatedUnions.ts, 230, 5))
813
+ >makeCompleteLookupMapping : Symbol(makeCompleteLookupMapping, Decl(correlatedUnions.ts, 221, 38))
814
+ >ALL_BARS : Symbol(ALL_BARS, Decl(correlatedUnions.ts, 228, 5))
815
+
816
+ type BarLookup = typeof BAR_LOOKUP;
817
+ >BarLookup : Symbol(BarLookup, Decl(correlatedUnions.ts, 230, 63))
818
+ >BAR_LOOKUP : Symbol(BAR_LOOKUP, Decl(correlatedUnions.ts, 230, 5))
819
+
820
+ type Baz = { [K in keyof BarLookup]: BarLookup[K]['name'] };
821
+ >Baz : Symbol(Baz, Decl(correlatedUnions.ts, 232, 35))
822
+ >K : Symbol(K, Decl(correlatedUnions.ts, 234, 14))
823
+ >BarLookup : Symbol(BarLookup, Decl(correlatedUnions.ts, 230, 63))
824
+ >BarLookup : Symbol(BarLookup, Decl(correlatedUnions.ts, 230, 63))
825
+ >K : Symbol(K, Decl(correlatedUnions.ts, 234, 14))
826
+
0 commit comments