@@ -84,3 +84,57 @@ function f3<U>() {
84
84
>Bar : Symbol(Bar, Decl(deepComparisons.ts, 6, 28))
85
85
>U : Symbol(U, Decl(deepComparisons.ts, 16, 12))
86
86
}
87
+
88
+ // Repro from #46500
89
+
90
+ type F<T> = {} & (
91
+ >F : Symbol(F, Decl(deepComparisons.ts, 18, 1))
92
+ >T : Symbol(T, Decl(deepComparisons.ts, 22, 7))
93
+
94
+ T extends [any, ...any[]]
95
+ >T : Symbol(T, Decl(deepComparisons.ts, 22, 7))
96
+
97
+ ? { [K in keyof T]?: F<T[K]> }
98
+ >K : Symbol(K, Decl(deepComparisons.ts, 24, 13))
99
+ >T : Symbol(T, Decl(deepComparisons.ts, 22, 7))
100
+ >F : Symbol(F, Decl(deepComparisons.ts, 18, 1))
101
+ >T : Symbol(T, Decl(deepComparisons.ts, 22, 7))
102
+ >K : Symbol(K, Decl(deepComparisons.ts, 24, 13))
103
+
104
+ : T extends any[]
105
+ >T : Symbol(T, Decl(deepComparisons.ts, 22, 7))
106
+
107
+ ? F<T[number]>[]
108
+ >F : Symbol(F, Decl(deepComparisons.ts, 18, 1))
109
+ >T : Symbol(T, Decl(deepComparisons.ts, 22, 7))
110
+
111
+ : T extends { [K: string]: any }
112
+ >T : Symbol(T, Decl(deepComparisons.ts, 22, 7))
113
+ >K : Symbol(K, Decl(deepComparisons.ts, 27, 27))
114
+
115
+ ? { [K in keyof T]?: F<T[K]> }
116
+ >K : Symbol(K, Decl(deepComparisons.ts, 28, 21))
117
+ >T : Symbol(T, Decl(deepComparisons.ts, 22, 7))
118
+ >F : Symbol(F, Decl(deepComparisons.ts, 18, 1))
119
+ >T : Symbol(T, Decl(deepComparisons.ts, 22, 7))
120
+ >K : Symbol(K, Decl(deepComparisons.ts, 28, 21))
121
+
122
+ : { x: string }
123
+ >x : Symbol(x, Decl(deepComparisons.ts, 29, 19))
124
+
125
+ );
126
+
127
+ declare function f<T = any>(): F<T>;
128
+ >f : Symbol(f, Decl(deepComparisons.ts, 30, 2))
129
+ >T : Symbol(T, Decl(deepComparisons.ts, 32, 19))
130
+ >F : Symbol(F, Decl(deepComparisons.ts, 18, 1))
131
+ >T : Symbol(T, Decl(deepComparisons.ts, 32, 19))
132
+
133
+ function g() {
134
+ >g : Symbol(g, Decl(deepComparisons.ts, 32, 36))
135
+
136
+ return f() as F<any>;
137
+ >f : Symbol(f, Decl(deepComparisons.ts, 30, 2))
138
+ >F : Symbol(F, Decl(deepComparisons.ts, 18, 1))
139
+ }
140
+
0 commit comments