@@ -207,3 +207,141 @@ function f14(a: AList4, b: BList4) {
207
207
>a : Symbol(a, Decl(covariantCallbacks.ts, 66, 13))
208
208
}
209
209
210
+ // Repro from #51620
211
+
212
+ type Bivar<T> = { set(value: T): void }
213
+ >Bivar : Symbol(Bivar, Decl(covariantCallbacks.ts, 69, 1))
214
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 73, 11))
215
+ >set : Symbol(set, Decl(covariantCallbacks.ts, 73, 17))
216
+ >value : Symbol(value, Decl(covariantCallbacks.ts, 73, 22))
217
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 73, 11))
218
+
219
+ declare let bu: Bivar<unknown>;
220
+ >bu : Symbol(bu, Decl(covariantCallbacks.ts, 75, 11))
221
+ >Bivar : Symbol(Bivar, Decl(covariantCallbacks.ts, 69, 1))
222
+
223
+ declare let bs: Bivar<string>;
224
+ >bs : Symbol(bs, Decl(covariantCallbacks.ts, 76, 11))
225
+ >Bivar : Symbol(Bivar, Decl(covariantCallbacks.ts, 69, 1))
226
+
227
+ bu = bs;
228
+ >bu : Symbol(bu, Decl(covariantCallbacks.ts, 75, 11))
229
+ >bs : Symbol(bs, Decl(covariantCallbacks.ts, 76, 11))
230
+
231
+ bs = bu;
232
+ >bs : Symbol(bs, Decl(covariantCallbacks.ts, 76, 11))
233
+ >bu : Symbol(bu, Decl(covariantCallbacks.ts, 75, 11))
234
+
235
+ declare let bfu: Bivar<(x: unknown) => void>;
236
+ >bfu : Symbol(bfu, Decl(covariantCallbacks.ts, 80, 11))
237
+ >Bivar : Symbol(Bivar, Decl(covariantCallbacks.ts, 69, 1))
238
+ >x : Symbol(x, Decl(covariantCallbacks.ts, 80, 24))
239
+
240
+ declare let bfs: Bivar<(x: string) => void>;
241
+ >bfs : Symbol(bfs, Decl(covariantCallbacks.ts, 81, 11))
242
+ >Bivar : Symbol(Bivar, Decl(covariantCallbacks.ts, 69, 1))
243
+ >x : Symbol(x, Decl(covariantCallbacks.ts, 81, 24))
244
+
245
+ bfu = bfs;
246
+ >bfu : Symbol(bfu, Decl(covariantCallbacks.ts, 80, 11))
247
+ >bfs : Symbol(bfs, Decl(covariantCallbacks.ts, 81, 11))
248
+
249
+ bfs = bfu;
250
+ >bfs : Symbol(bfs, Decl(covariantCallbacks.ts, 81, 11))
251
+ >bfu : Symbol(bfu, Decl(covariantCallbacks.ts, 80, 11))
252
+
253
+ type Bivar1<T> = { set(value: T): void }
254
+ >Bivar1 : Symbol(Bivar1, Decl(covariantCallbacks.ts, 83, 10))
255
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 85, 12))
256
+ >set : Symbol(set, Decl(covariantCallbacks.ts, 85, 18))
257
+ >value : Symbol(value, Decl(covariantCallbacks.ts, 85, 23))
258
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 85, 12))
259
+
260
+ type Bivar2<T> = { set(value: T): void }
261
+ >Bivar2 : Symbol(Bivar2, Decl(covariantCallbacks.ts, 85, 40))
262
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 86, 12))
263
+ >set : Symbol(set, Decl(covariantCallbacks.ts, 86, 18))
264
+ >value : Symbol(value, Decl(covariantCallbacks.ts, 86, 23))
265
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 86, 12))
266
+
267
+ declare let b1fu: Bivar1<(x: unknown) => void>;
268
+ >b1fu : Symbol(b1fu, Decl(covariantCallbacks.ts, 88, 11))
269
+ >Bivar1 : Symbol(Bivar1, Decl(covariantCallbacks.ts, 83, 10))
270
+ >x : Symbol(x, Decl(covariantCallbacks.ts, 88, 26))
271
+
272
+ declare let b2fs: Bivar2<(x: string) => void>;
273
+ >b2fs : Symbol(b2fs, Decl(covariantCallbacks.ts, 89, 11))
274
+ >Bivar2 : Symbol(Bivar2, Decl(covariantCallbacks.ts, 85, 40))
275
+ >x : Symbol(x, Decl(covariantCallbacks.ts, 89, 26))
276
+
277
+ b1fu = b2fs;
278
+ >b1fu : Symbol(b1fu, Decl(covariantCallbacks.ts, 88, 11))
279
+ >b2fs : Symbol(b2fs, Decl(covariantCallbacks.ts, 89, 11))
280
+
281
+ b2fs = b1fu;
282
+ >b2fs : Symbol(b2fs, Decl(covariantCallbacks.ts, 89, 11))
283
+ >b1fu : Symbol(b1fu, Decl(covariantCallbacks.ts, 88, 11))
284
+
285
+ type SetLike<T> = { set(value: T): void, get(): T }
286
+ >SetLike : Symbol(SetLike, Decl(covariantCallbacks.ts, 91, 12))
287
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 93, 13))
288
+ >set : Symbol(set, Decl(covariantCallbacks.ts, 93, 19))
289
+ >value : Symbol(value, Decl(covariantCallbacks.ts, 93, 24))
290
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 93, 13))
291
+ >get : Symbol(get, Decl(covariantCallbacks.ts, 93, 40))
292
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 93, 13))
293
+
294
+ declare let sx: SetLike1<(x: unknown) => void>;
295
+ >sx : Symbol(sx, Decl(covariantCallbacks.ts, 95, 11))
296
+ >SetLike1 : Symbol(SetLike1, Decl(covariantCallbacks.ts, 98, 8))
297
+ >x : Symbol(x, Decl(covariantCallbacks.ts, 95, 26))
298
+
299
+ declare let sy: SetLike1<(x: string) => void>;
300
+ >sy : Symbol(sy, Decl(covariantCallbacks.ts, 96, 11))
301
+ >SetLike1 : Symbol(SetLike1, Decl(covariantCallbacks.ts, 98, 8))
302
+ >x : Symbol(x, Decl(covariantCallbacks.ts, 96, 26))
303
+
304
+ sx = sy; // Error
305
+ >sx : Symbol(sx, Decl(covariantCallbacks.ts, 95, 11))
306
+ >sy : Symbol(sy, Decl(covariantCallbacks.ts, 96, 11))
307
+
308
+ sy = sx;
309
+ >sy : Symbol(sy, Decl(covariantCallbacks.ts, 96, 11))
310
+ >sx : Symbol(sx, Decl(covariantCallbacks.ts, 95, 11))
311
+
312
+ type SetLike1<T> = { set(value: T): void, get(): T }
313
+ >SetLike1 : Symbol(SetLike1, Decl(covariantCallbacks.ts, 98, 8))
314
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 100, 14))
315
+ >set : Symbol(set, Decl(covariantCallbacks.ts, 100, 20))
316
+ >value : Symbol(value, Decl(covariantCallbacks.ts, 100, 25))
317
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 100, 14))
318
+ >get : Symbol(get, Decl(covariantCallbacks.ts, 100, 41))
319
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 100, 14))
320
+
321
+ type SetLike2<T> = { set(value: T): void, get(): T }
322
+ >SetLike2 : Symbol(SetLike2, Decl(covariantCallbacks.ts, 100, 52))
323
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 101, 14))
324
+ >set : Symbol(set, Decl(covariantCallbacks.ts, 101, 20))
325
+ >value : Symbol(value, Decl(covariantCallbacks.ts, 101, 25))
326
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 101, 14))
327
+ >get : Symbol(get, Decl(covariantCallbacks.ts, 101, 41))
328
+ >T : Symbol(T, Decl(covariantCallbacks.ts, 101, 14))
329
+
330
+ declare let s1: SetLike1<(x: unknown) => void>;
331
+ >s1 : Symbol(s1, Decl(covariantCallbacks.ts, 103, 11))
332
+ >SetLike1 : Symbol(SetLike1, Decl(covariantCallbacks.ts, 98, 8))
333
+ >x : Symbol(x, Decl(covariantCallbacks.ts, 103, 26))
334
+
335
+ declare let s2: SetLike2<(x: string) => void>;
336
+ >s2 : Symbol(s2, Decl(covariantCallbacks.ts, 104, 11))
337
+ >SetLike2 : Symbol(SetLike2, Decl(covariantCallbacks.ts, 100, 52))
338
+ >x : Symbol(x, Decl(covariantCallbacks.ts, 104, 26))
339
+
340
+ s1 = s2; // Error
341
+ >s1 : Symbol(s1, Decl(covariantCallbacks.ts, 103, 11))
342
+ >s2 : Symbol(s2, Decl(covariantCallbacks.ts, 104, 11))
343
+
344
+ s2 = s1;
345
+ >s2 : Symbol(s2, Decl(covariantCallbacks.ts, 104, 11))
346
+ >s1 : Symbol(s1, Decl(covariantCallbacks.ts, 103, 11))
347
+
0 commit comments