@@ -311,3 +311,69 @@ function func2(inst: Instance) {
311
311
}
312
312
}
313
313
314
+ // Repro from #29106
315
+
316
+ const f = (_a: string, _b: string): void => {};
317
+ >f : Symbol(f, Decl(discriminantPropertyCheck.ts, 102, 5))
318
+ >_a : Symbol(_a, Decl(discriminantPropertyCheck.ts, 102, 11))
319
+ >_b : Symbol(_b, Decl(discriminantPropertyCheck.ts, 102, 22))
320
+
321
+ interface A {
322
+ >A : Symbol(A, Decl(discriminantPropertyCheck.ts, 102, 47))
323
+
324
+ a?: string;
325
+ >a : Symbol(A.a, Decl(discriminantPropertyCheck.ts, 104, 13))
326
+
327
+ b?: string;
328
+ >b : Symbol(A.b, Decl(discriminantPropertyCheck.ts, 105, 13))
329
+ }
330
+
331
+ interface B {
332
+ >B : Symbol(B, Decl(discriminantPropertyCheck.ts, 107, 1))
333
+
334
+ a: string;
335
+ >a : Symbol(B.a, Decl(discriminantPropertyCheck.ts, 109, 13))
336
+
337
+ b: string;
338
+ >b : Symbol(B.b, Decl(discriminantPropertyCheck.ts, 110, 12))
339
+ }
340
+
341
+ type U = A | B;
342
+ >U : Symbol(U, Decl(discriminantPropertyCheck.ts, 112, 1))
343
+ >A : Symbol(A, Decl(discriminantPropertyCheck.ts, 102, 47))
344
+ >B : Symbol(B, Decl(discriminantPropertyCheck.ts, 107, 1))
345
+
346
+ const u: U = {} as any;
347
+ >u : Symbol(u, Decl(discriminantPropertyCheck.ts, 116, 5))
348
+ >U : Symbol(U, Decl(discriminantPropertyCheck.ts, 112, 1))
349
+
350
+ u.a && u.b && f(u.a, u.b);
351
+ >u.a : Symbol(a, Decl(discriminantPropertyCheck.ts, 104, 13), Decl(discriminantPropertyCheck.ts, 109, 13))
352
+ >u : Symbol(u, Decl(discriminantPropertyCheck.ts, 116, 5))
353
+ >a : Symbol(a, Decl(discriminantPropertyCheck.ts, 104, 13), Decl(discriminantPropertyCheck.ts, 109, 13))
354
+ >u.b : Symbol(b, Decl(discriminantPropertyCheck.ts, 105, 13), Decl(discriminantPropertyCheck.ts, 110, 12))
355
+ >u : Symbol(u, Decl(discriminantPropertyCheck.ts, 116, 5))
356
+ >b : Symbol(b, Decl(discriminantPropertyCheck.ts, 105, 13), Decl(discriminantPropertyCheck.ts, 110, 12))
357
+ >f : Symbol(f, Decl(discriminantPropertyCheck.ts, 102, 5))
358
+ >u.a : Symbol(a, Decl(discriminantPropertyCheck.ts, 104, 13), Decl(discriminantPropertyCheck.ts, 109, 13))
359
+ >u : Symbol(u, Decl(discriminantPropertyCheck.ts, 116, 5))
360
+ >a : Symbol(a, Decl(discriminantPropertyCheck.ts, 104, 13), Decl(discriminantPropertyCheck.ts, 109, 13))
361
+ >u.b : Symbol(b, Decl(discriminantPropertyCheck.ts, 105, 13), Decl(discriminantPropertyCheck.ts, 110, 12))
362
+ >u : Symbol(u, Decl(discriminantPropertyCheck.ts, 116, 5))
363
+ >b : Symbol(b, Decl(discriminantPropertyCheck.ts, 105, 13), Decl(discriminantPropertyCheck.ts, 110, 12))
364
+
365
+ u.b && u.a && f(u.a, u.b);
366
+ >u.b : Symbol(b, Decl(discriminantPropertyCheck.ts, 105, 13), Decl(discriminantPropertyCheck.ts, 110, 12))
367
+ >u : Symbol(u, Decl(discriminantPropertyCheck.ts, 116, 5))
368
+ >b : Symbol(b, Decl(discriminantPropertyCheck.ts, 105, 13), Decl(discriminantPropertyCheck.ts, 110, 12))
369
+ >u.a : Symbol(a, Decl(discriminantPropertyCheck.ts, 104, 13), Decl(discriminantPropertyCheck.ts, 109, 13))
370
+ >u : Symbol(u, Decl(discriminantPropertyCheck.ts, 116, 5))
371
+ >a : Symbol(a, Decl(discriminantPropertyCheck.ts, 104, 13), Decl(discriminantPropertyCheck.ts, 109, 13))
372
+ >f : Symbol(f, Decl(discriminantPropertyCheck.ts, 102, 5))
373
+ >u.a : Symbol(a, Decl(discriminantPropertyCheck.ts, 104, 13), Decl(discriminantPropertyCheck.ts, 109, 13))
374
+ >u : Symbol(u, Decl(discriminantPropertyCheck.ts, 116, 5))
375
+ >a : Symbol(a, Decl(discriminantPropertyCheck.ts, 104, 13), Decl(discriminantPropertyCheck.ts, 109, 13))
376
+ >u.b : Symbol(b, Decl(discriminantPropertyCheck.ts, 105, 13), Decl(discriminantPropertyCheck.ts, 110, 12))
377
+ >u : Symbol(u, Decl(discriminantPropertyCheck.ts, 116, 5))
378
+ >b : Symbol(b, Decl(discriminantPropertyCheck.ts, 105, 13), Decl(discriminantPropertyCheck.ts, 110, 12))
379
+
0 commit comments