@@ -995,3 +995,51 @@ function x<T_AB extends AB>(x: T_AB & undefined, y: any) {
995995>T_AB : Symbol(T_AB, Decl(unknownControlFlow.ts, 425, 11))
996996}
997997
998+ // Repro from #51538
999+
1000+ type Left = 'left';
1001+ >Left : Symbol(Left, Decl(unknownControlFlow.ts, 427, 1))
1002+
1003+ type Right = 'right' & { right: 'right' };
1004+ >Right : Symbol(Right, Decl(unknownControlFlow.ts, 431, 19))
1005+ >right : Symbol(right, Decl(unknownControlFlow.ts, 432, 24))
1006+
1007+ type Either = Left | Right;
1008+ >Either : Symbol(Either, Decl(unknownControlFlow.ts, 432, 42))
1009+ >Left : Symbol(Left, Decl(unknownControlFlow.ts, 427, 1))
1010+ >Right : Symbol(Right, Decl(unknownControlFlow.ts, 431, 19))
1011+
1012+ function assertNever(v: never): never {
1013+ >assertNever : Symbol(assertNever, Decl(unknownControlFlow.ts, 433, 27))
1014+ >v : Symbol(v, Decl(unknownControlFlow.ts, 435, 21))
1015+
1016+ throw new Error('never');
1017+ >Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
1018+ }
1019+
1020+ function fx20(value: Either) {
1021+ >fx20 : Symbol(fx20, Decl(unknownControlFlow.ts, 437, 1))
1022+ >value : Symbol(value, Decl(unknownControlFlow.ts, 439, 14))
1023+ >Either : Symbol(Either, Decl(unknownControlFlow.ts, 432, 42))
1024+
1025+ if (value === 'left') {
1026+ >value : Symbol(value, Decl(unknownControlFlow.ts, 439, 14))
1027+
1028+ const foo: 'left' = value;
1029+ >foo : Symbol(foo, Decl(unknownControlFlow.ts, 441, 13))
1030+ >value : Symbol(value, Decl(unknownControlFlow.ts, 439, 14))
1031+ }
1032+ else if (value === 'right') {
1033+ >value : Symbol(value, Decl(unknownControlFlow.ts, 439, 14))
1034+
1035+ const bar: 'right' = value;
1036+ >bar : Symbol(bar, Decl(unknownControlFlow.ts, 444, 13))
1037+ >value : Symbol(value, Decl(unknownControlFlow.ts, 439, 14))
1038+ }
1039+ else {
1040+ assertNever(value);
1041+ >assertNever : Symbol(assertNever, Decl(unknownControlFlow.ts, 433, 27))
1042+ >value : Symbol(value, Decl(unknownControlFlow.ts, 439, 14))
1043+ }
1044+ }
1045+
0 commit comments