@@ -482,3 +482,59 @@ function f1x(obj: (string | number)[] | null) {
482
482
>obj : Symbol(obj, Decl(narrowingUnionToUnion.ts, 207, 13))
483
483
}
484
484
485
+ // Repro from #55425
486
+
487
+ type MyDiscriminatedUnion = { type: 'A', aProp: number } | { type: 'B', bProp: string };
488
+ >MyDiscriminatedUnion : Symbol(MyDiscriminatedUnion, Decl(narrowingUnionToUnion.ts, 210, 1))
489
+ >type : Symbol(type, Decl(narrowingUnionToUnion.ts, 214, 29))
490
+ >aProp : Symbol(aProp, Decl(narrowingUnionToUnion.ts, 214, 40))
491
+ >type : Symbol(type, Decl(narrowingUnionToUnion.ts, 214, 60))
492
+ >bProp : Symbol(bProp, Decl(narrowingUnionToUnion.ts, 214, 71))
493
+
494
+ declare function isMyDiscriminatedUnion(item: unknown): item is MyDiscriminatedUnion;
495
+ >isMyDiscriminatedUnion : Symbol(isMyDiscriminatedUnion, Decl(narrowingUnionToUnion.ts, 214, 88))
496
+ >item : Symbol(item, Decl(narrowingUnionToUnion.ts, 216, 40))
497
+ >item : Symbol(item, Decl(narrowingUnionToUnion.ts, 216, 40))
498
+ >MyDiscriminatedUnion : Symbol(MyDiscriminatedUnion, Decl(narrowingUnionToUnion.ts, 210, 1))
499
+
500
+ declare const working: unknown;
501
+ >working : Symbol(working, Decl(narrowingUnionToUnion.ts, 218, 13))
502
+
503
+ declare const broken: Record<string, any> | undefined;
504
+ >broken : Symbol(broken, Decl(narrowingUnionToUnion.ts, 219, 13))
505
+ >Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
506
+
507
+ declare const workingAgain: Record<string, any> | undefined | unknown;
508
+ >workingAgain : Symbol(workingAgain, Decl(narrowingUnionToUnion.ts, 220, 13))
509
+ >Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
510
+
511
+ isMyDiscriminatedUnion(working) && working.type === 'A' && working.aProp;
512
+ >isMyDiscriminatedUnion : Symbol(isMyDiscriminatedUnion, Decl(narrowingUnionToUnion.ts, 214, 88))
513
+ >working : Symbol(working, Decl(narrowingUnionToUnion.ts, 218, 13))
514
+ >working.type : Symbol(type, Decl(narrowingUnionToUnion.ts, 214, 29), Decl(narrowingUnionToUnion.ts, 214, 60))
515
+ >working : Symbol(working, Decl(narrowingUnionToUnion.ts, 218, 13))
516
+ >type : Symbol(type, Decl(narrowingUnionToUnion.ts, 214, 29), Decl(narrowingUnionToUnion.ts, 214, 60))
517
+ >working.aProp : Symbol(aProp, Decl(narrowingUnionToUnion.ts, 214, 40))
518
+ >working : Symbol(working, Decl(narrowingUnionToUnion.ts, 218, 13))
519
+ >aProp : Symbol(aProp, Decl(narrowingUnionToUnion.ts, 214, 40))
520
+
521
+ isMyDiscriminatedUnion(broken) && broken.type === 'A' && broken.aProp;
522
+ >isMyDiscriminatedUnion : Symbol(isMyDiscriminatedUnion, Decl(narrowingUnionToUnion.ts, 214, 88))
523
+ >broken : Symbol(broken, Decl(narrowingUnionToUnion.ts, 219, 13))
524
+ >broken.type : Symbol(type, Decl(narrowingUnionToUnion.ts, 214, 29), Decl(narrowingUnionToUnion.ts, 214, 60))
525
+ >broken : Symbol(broken, Decl(narrowingUnionToUnion.ts, 219, 13))
526
+ >type : Symbol(type, Decl(narrowingUnionToUnion.ts, 214, 29), Decl(narrowingUnionToUnion.ts, 214, 60))
527
+ >broken.aProp : Symbol(aProp, Decl(narrowingUnionToUnion.ts, 214, 40))
528
+ >broken : Symbol(broken, Decl(narrowingUnionToUnion.ts, 219, 13))
529
+ >aProp : Symbol(aProp, Decl(narrowingUnionToUnion.ts, 214, 40))
530
+
531
+ isMyDiscriminatedUnion(workingAgain) && workingAgain.type === 'A' && workingAgain.aProp;
532
+ >isMyDiscriminatedUnion : Symbol(isMyDiscriminatedUnion, Decl(narrowingUnionToUnion.ts, 214, 88))
533
+ >workingAgain : Symbol(workingAgain, Decl(narrowingUnionToUnion.ts, 220, 13))
534
+ >workingAgain.type : Symbol(type, Decl(narrowingUnionToUnion.ts, 214, 29), Decl(narrowingUnionToUnion.ts, 214, 60))
535
+ >workingAgain : Symbol(workingAgain, Decl(narrowingUnionToUnion.ts, 220, 13))
536
+ >type : Symbol(type, Decl(narrowingUnionToUnion.ts, 214, 29), Decl(narrowingUnionToUnion.ts, 214, 60))
537
+ >workingAgain.aProp : Symbol(aProp, Decl(narrowingUnionToUnion.ts, 214, 40))
538
+ >workingAgain : Symbol(workingAgain, Decl(narrowingUnionToUnion.ts, 220, 13))
539
+ >aProp : Symbol(aProp, Decl(narrowingUnionToUnion.ts, 214, 40))
540
+
0 commit comments