@@ -753,3 +753,74 @@ function func<K extends keyof MyObj>(k: K): MyObj[K]['name'] | undefined {
753753>undefined : Symbol(undefined)
754754}
755755
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