Skip to content

Commit 48cad77

Browse files
committed
Accept new baselines
1 parent 83f7f4d commit 48cad77

File tree

4 files changed

+206
-0
lines changed

4 files changed

+206
-0
lines changed

tests/baselines/reference/discriminantPropertyCheck.errors.txt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,4 +128,30 @@ tests/cases/compiler/discriminantPropertyCheck.ts(65,9): error TS2532: Object is
128128
u.a && u.b && f(u.a, u.b);
129129

130130
u.b && u.a && f(u.a, u.b);
131+
132+
// Repro from #29496
133+
134+
declare function never(value: never): never;
135+
136+
const enum BarEnum {
137+
bar1 = 1,
138+
bar2 = 2,
139+
}
140+
141+
type UnionOfBar = TypeBar1 | TypeBar2;
142+
type TypeBar1 = { type: BarEnum.bar1 };
143+
type TypeBar2 = { type: BarEnum.bar2 };
144+
145+
function func3(value: Partial<UnionOfBar>) {
146+
if (value.type !== undefined) {
147+
switch (value.type) {
148+
case BarEnum.bar1:
149+
break;
150+
case BarEnum.bar2:
151+
break;
152+
default:
153+
never(value.type);
154+
}
155+
}
156+
}
131157

tests/baselines/reference/discriminantPropertyCheck.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,32 @@ const u: U = {} as any;
120120
u.a && u.b && f(u.a, u.b);
121121

122122
u.b && u.a && f(u.a, u.b);
123+
124+
// Repro from #29496
125+
126+
declare function never(value: never): never;
127+
128+
const enum BarEnum {
129+
bar1 = 1,
130+
bar2 = 2,
131+
}
132+
133+
type UnionOfBar = TypeBar1 | TypeBar2;
134+
type TypeBar1 = { type: BarEnum.bar1 };
135+
type TypeBar2 = { type: BarEnum.bar2 };
136+
137+
function func3(value: Partial<UnionOfBar>) {
138+
if (value.type !== undefined) {
139+
switch (value.type) {
140+
case BarEnum.bar1:
141+
break;
142+
case BarEnum.bar2:
143+
break;
144+
default:
145+
never(value.type);
146+
}
147+
}
148+
}
123149

124150

125151
//// [discriminantPropertyCheck.js]
@@ -188,3 +214,15 @@ var f = function (_a, _b) { };
188214
var u = {};
189215
u.a && u.b && f(u.a, u.b);
190216
u.b && u.a && f(u.a, u.b);
217+
function func3(value) {
218+
if (value.type !== undefined) {
219+
switch (value.type) {
220+
case 1 /* bar1 */:
221+
break;
222+
case 2 /* bar2 */:
223+
break;
224+
default:
225+
never(value.type);
226+
}
227+
}
228+
}

tests/baselines/reference/discriminantPropertyCheck.symbols

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,3 +377,75 @@ u.b && u.a && f(u.a, u.b);
377377
>u : Symbol(u, Decl(discriminantPropertyCheck.ts, 116, 5))
378378
>b : Symbol(b, Decl(discriminantPropertyCheck.ts, 105, 13), Decl(discriminantPropertyCheck.ts, 110, 12))
379379

380+
// Repro from #29496
381+
382+
declare function never(value: never): never;
383+
>never : Symbol(never, Decl(discriminantPropertyCheck.ts, 120, 26))
384+
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 124, 23))
385+
386+
const enum BarEnum {
387+
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 124, 44))
388+
389+
bar1 = 1,
390+
>bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 126, 20))
391+
392+
bar2 = 2,
393+
>bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 127, 13))
394+
}
395+
396+
type UnionOfBar = TypeBar1 | TypeBar2;
397+
>UnionOfBar : Symbol(UnionOfBar, Decl(discriminantPropertyCheck.ts, 129, 1))
398+
>TypeBar1 : Symbol(TypeBar1, Decl(discriminantPropertyCheck.ts, 131, 38))
399+
>TypeBar2 : Symbol(TypeBar2, Decl(discriminantPropertyCheck.ts, 132, 39))
400+
401+
type TypeBar1 = { type: BarEnum.bar1 };
402+
>TypeBar1 : Symbol(TypeBar1, Decl(discriminantPropertyCheck.ts, 131, 38))
403+
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17))
404+
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 124, 44))
405+
>bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 126, 20))
406+
407+
type TypeBar2 = { type: BarEnum.bar2 };
408+
>TypeBar2 : Symbol(TypeBar2, Decl(discriminantPropertyCheck.ts, 132, 39))
409+
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 133, 17))
410+
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 124, 44))
411+
>bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 127, 13))
412+
413+
function func3(value: Partial<UnionOfBar>) {
414+
>func3 : Symbol(func3, Decl(discriminantPropertyCheck.ts, 133, 39))
415+
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 135, 15))
416+
>Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --))
417+
>UnionOfBar : Symbol(UnionOfBar, Decl(discriminantPropertyCheck.ts, 129, 1))
418+
419+
if (value.type !== undefined) {
420+
>value.type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17), Decl(discriminantPropertyCheck.ts, 133, 17))
421+
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 135, 15))
422+
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17), Decl(discriminantPropertyCheck.ts, 133, 17))
423+
>undefined : Symbol(undefined)
424+
425+
switch (value.type) {
426+
>value.type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17), Decl(discriminantPropertyCheck.ts, 133, 17))
427+
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 135, 15))
428+
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17), Decl(discriminantPropertyCheck.ts, 133, 17))
429+
430+
case BarEnum.bar1:
431+
>BarEnum.bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 126, 20))
432+
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 124, 44))
433+
>bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 126, 20))
434+
435+
break;
436+
case BarEnum.bar2:
437+
>BarEnum.bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 127, 13))
438+
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 124, 44))
439+
>bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 127, 13))
440+
441+
break;
442+
default:
443+
never(value.type);
444+
>never : Symbol(never, Decl(discriminantPropertyCheck.ts, 120, 26))
445+
>value.type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17), Decl(discriminantPropertyCheck.ts, 133, 17))
446+
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 135, 15))
447+
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17), Decl(discriminantPropertyCheck.ts, 133, 17))
448+
}
449+
}
450+
}
451+

tests/baselines/reference/discriminantPropertyCheck.types

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,3 +378,73 @@ u.b && u.a && f(u.a, u.b);
378378
>u : U
379379
>b : string
380380

381+
// Repro from #29496
382+
383+
declare function never(value: never): never;
384+
>never : (value: never) => never
385+
>value : never
386+
387+
const enum BarEnum {
388+
>BarEnum : BarEnum
389+
390+
bar1 = 1,
391+
>bar1 : BarEnum.bar1
392+
>1 : 1
393+
394+
bar2 = 2,
395+
>bar2 : BarEnum.bar2
396+
>2 : 2
397+
}
398+
399+
type UnionOfBar = TypeBar1 | TypeBar2;
400+
>UnionOfBar : UnionOfBar
401+
402+
type TypeBar1 = { type: BarEnum.bar1 };
403+
>TypeBar1 : TypeBar1
404+
>type : BarEnum.bar1
405+
>BarEnum : any
406+
407+
type TypeBar2 = { type: BarEnum.bar2 };
408+
>TypeBar2 : TypeBar2
409+
>type : BarEnum.bar2
410+
>BarEnum : any
411+
412+
function func3(value: Partial<UnionOfBar>) {
413+
>func3 : (value: Partial<TypeBar1> | Partial<TypeBar2>) => void
414+
>value : Partial<TypeBar1> | Partial<TypeBar2>
415+
416+
if (value.type !== undefined) {
417+
>value.type !== undefined : boolean
418+
>value.type : BarEnum | undefined
419+
>value : Partial<TypeBar1> | Partial<TypeBar2>
420+
>type : BarEnum | undefined
421+
>undefined : undefined
422+
423+
switch (value.type) {
424+
>value.type : BarEnum
425+
>value : Partial<TypeBar1> | Partial<TypeBar2>
426+
>type : BarEnum
427+
428+
case BarEnum.bar1:
429+
>BarEnum.bar1 : BarEnum.bar1
430+
>BarEnum : typeof BarEnum
431+
>bar1 : BarEnum.bar1
432+
433+
break;
434+
case BarEnum.bar2:
435+
>BarEnum.bar2 : BarEnum.bar2
436+
>BarEnum : typeof BarEnum
437+
>bar2 : BarEnum.bar2
438+
439+
break;
440+
default:
441+
never(value.type);
442+
>never(value.type) : never
443+
>never : (value: never) => never
444+
>value.type : never
445+
>value : Partial<TypeBar1> | Partial<TypeBar2>
446+
>type : never
447+
}
448+
}
449+
}
450+

0 commit comments

Comments
 (0)