@@ -138,3 +138,53 @@ declare function function1<T extends {[K in keyof T]: Cond<T[K]>}>(): T[keyof T]
138
138
>T : Symbol(T, Decl(infiniteConstraints.ts, 35, 27))
139
139
>T : Symbol(T, Decl(infiniteConstraints.ts, 35, 27))
140
140
141
+ // Repro from #31823
142
+
143
+ export type Prepend<Elm, T extends unknown[]> =
144
+ >Prepend : Symbol(Prepend, Decl(infiniteConstraints.ts, 35, 88))
145
+ >Elm : Symbol(Elm, Decl(infiniteConstraints.ts, 39, 20))
146
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 39, 24))
147
+
148
+ T extends unknown ?
149
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 39, 24))
150
+
151
+ ((arg: Elm, ...rest: T) => void) extends ((...args: infer T2) => void) ? T2 :
152
+ >arg : Symbol(arg, Decl(infiniteConstraints.ts, 41, 4))
153
+ >Elm : Symbol(Elm, Decl(infiniteConstraints.ts, 39, 20))
154
+ >rest : Symbol(rest, Decl(infiniteConstraints.ts, 41, 13))
155
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 39, 24))
156
+ >args : Symbol(args, Decl(infiniteConstraints.ts, 41, 45))
157
+ >T2 : Symbol(T2, Decl(infiniteConstraints.ts, 41, 59))
158
+ >T2 : Symbol(T2, Decl(infiniteConstraints.ts, 41, 59))
159
+
160
+ never :
161
+ never;
162
+ export type ExactExtract<T, U> = T extends U ? U extends T ? T : never : never;
163
+ >ExactExtract : Symbol(ExactExtract, Decl(infiniteConstraints.ts, 43, 8))
164
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 44, 25))
165
+ >U : Symbol(U, Decl(infiniteConstraints.ts, 44, 27))
166
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 44, 25))
167
+ >U : Symbol(U, Decl(infiniteConstraints.ts, 44, 27))
168
+ >U : Symbol(U, Decl(infiniteConstraints.ts, 44, 27))
169
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 44, 25))
170
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 44, 25))
171
+
172
+ type Conv<T, U = T> =
173
+ >Conv : Symbol(Conv, Decl(infiniteConstraints.ts, 44, 79))
174
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 46, 10))
175
+ >U : Symbol(U, Decl(infiniteConstraints.ts, 46, 12))
176
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 46, 10))
177
+
178
+ { 0: [T]; 1: Prepend<T, Conv<ExactExtract<U, T>>>;}[U extends T ? 0 : 1];
179
+ >0 : Symbol(0, Decl(infiniteConstraints.ts, 47, 3))
180
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 46, 10))
181
+ >1 : Symbol(1, Decl(infiniteConstraints.ts, 47, 11))
182
+ >Prepend : Symbol(Prepend, Decl(infiniteConstraints.ts, 35, 88))
183
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 46, 10))
184
+ >Conv : Symbol(Conv, Decl(infiniteConstraints.ts, 44, 79))
185
+ >ExactExtract : Symbol(ExactExtract, Decl(infiniteConstraints.ts, 43, 8))
186
+ >U : Symbol(U, Decl(infiniteConstraints.ts, 46, 12))
187
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 46, 10))
188
+ >U : Symbol(U, Decl(infiniteConstraints.ts, 46, 12))
189
+ >T : Symbol(T, Decl(infiniteConstraints.ts, 46, 10))
190
+
0 commit comments