Accept new baselines

This commit is contained in:
Anders Hejlsberg 2019-01-24 09:30:54 -08:00
parent 83f7f4d190
commit 48cad7788d
4 changed files with 206 additions and 0 deletions

View File

@ -128,4 +128,30 @@ tests/cases/compiler/discriminantPropertyCheck.ts(65,9): error TS2532: Object is
u.a && u.b && f(u.a, u.b);
u.b && u.a && f(u.a, u.b);
// Repro from #29496
declare function never(value: never): never;
const enum BarEnum {
bar1 = 1,
bar2 = 2,
}
type UnionOfBar = TypeBar1 | TypeBar2;
type TypeBar1 = { type: BarEnum.bar1 };
type TypeBar2 = { type: BarEnum.bar2 };
function func3(value: Partial<UnionOfBar>) {
if (value.type !== undefined) {
switch (value.type) {
case BarEnum.bar1:
break;
case BarEnum.bar2:
break;
default:
never(value.type);
}
}
}

View File

@ -120,6 +120,32 @@ const u: U = {} as any;
u.a && u.b && f(u.a, u.b);
u.b && u.a && f(u.a, u.b);
// Repro from #29496
declare function never(value: never): never;
const enum BarEnum {
bar1 = 1,
bar2 = 2,
}
type UnionOfBar = TypeBar1 | TypeBar2;
type TypeBar1 = { type: BarEnum.bar1 };
type TypeBar2 = { type: BarEnum.bar2 };
function func3(value: Partial<UnionOfBar>) {
if (value.type !== undefined) {
switch (value.type) {
case BarEnum.bar1:
break;
case BarEnum.bar2:
break;
default:
never(value.type);
}
}
}
//// [discriminantPropertyCheck.js]
@ -188,3 +214,15 @@ var f = function (_a, _b) { };
var u = {};
u.a && u.b && f(u.a, u.b);
u.b && u.a && f(u.a, u.b);
function func3(value) {
if (value.type !== undefined) {
switch (value.type) {
case 1 /* bar1 */:
break;
case 2 /* bar2 */:
break;
default:
never(value.type);
}
}
}

View File

@ -377,3 +377,75 @@ u.b && u.a && f(u.a, u.b);
>u : Symbol(u, Decl(discriminantPropertyCheck.ts, 116, 5))
>b : Symbol(b, Decl(discriminantPropertyCheck.ts, 105, 13), Decl(discriminantPropertyCheck.ts, 110, 12))
// Repro from #29496
declare function never(value: never): never;
>never : Symbol(never, Decl(discriminantPropertyCheck.ts, 120, 26))
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 124, 23))
const enum BarEnum {
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 124, 44))
bar1 = 1,
>bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 126, 20))
bar2 = 2,
>bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 127, 13))
}
type UnionOfBar = TypeBar1 | TypeBar2;
>UnionOfBar : Symbol(UnionOfBar, Decl(discriminantPropertyCheck.ts, 129, 1))
>TypeBar1 : Symbol(TypeBar1, Decl(discriminantPropertyCheck.ts, 131, 38))
>TypeBar2 : Symbol(TypeBar2, Decl(discriminantPropertyCheck.ts, 132, 39))
type TypeBar1 = { type: BarEnum.bar1 };
>TypeBar1 : Symbol(TypeBar1, Decl(discriminantPropertyCheck.ts, 131, 38))
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17))
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 124, 44))
>bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 126, 20))
type TypeBar2 = { type: BarEnum.bar2 };
>TypeBar2 : Symbol(TypeBar2, Decl(discriminantPropertyCheck.ts, 132, 39))
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 133, 17))
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 124, 44))
>bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 127, 13))
function func3(value: Partial<UnionOfBar>) {
>func3 : Symbol(func3, Decl(discriminantPropertyCheck.ts, 133, 39))
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 135, 15))
>Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --))
>UnionOfBar : Symbol(UnionOfBar, Decl(discriminantPropertyCheck.ts, 129, 1))
if (value.type !== undefined) {
>value.type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17), Decl(discriminantPropertyCheck.ts, 133, 17))
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 135, 15))
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17), Decl(discriminantPropertyCheck.ts, 133, 17))
>undefined : Symbol(undefined)
switch (value.type) {
>value.type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17), Decl(discriminantPropertyCheck.ts, 133, 17))
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 135, 15))
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17), Decl(discriminantPropertyCheck.ts, 133, 17))
case BarEnum.bar1:
>BarEnum.bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 126, 20))
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 124, 44))
>bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 126, 20))
break;
case BarEnum.bar2:
>BarEnum.bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 127, 13))
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 124, 44))
>bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 127, 13))
break;
default:
never(value.type);
>never : Symbol(never, Decl(discriminantPropertyCheck.ts, 120, 26))
>value.type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17), Decl(discriminantPropertyCheck.ts, 133, 17))
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 135, 15))
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 132, 17), Decl(discriminantPropertyCheck.ts, 133, 17))
}
}
}

View File

@ -378,3 +378,73 @@ u.b && u.a && f(u.a, u.b);
>u : U
>b : string
// Repro from #29496
declare function never(value: never): never;
>never : (value: never) => never
>value : never
const enum BarEnum {
>BarEnum : BarEnum
bar1 = 1,
>bar1 : BarEnum.bar1
>1 : 1
bar2 = 2,
>bar2 : BarEnum.bar2
>2 : 2
}
type UnionOfBar = TypeBar1 | TypeBar2;
>UnionOfBar : UnionOfBar
type TypeBar1 = { type: BarEnum.bar1 };
>TypeBar1 : TypeBar1
>type : BarEnum.bar1
>BarEnum : any
type TypeBar2 = { type: BarEnum.bar2 };
>TypeBar2 : TypeBar2
>type : BarEnum.bar2
>BarEnum : any
function func3(value: Partial<UnionOfBar>) {
>func3 : (value: Partial<TypeBar1> | Partial<TypeBar2>) => void
>value : Partial<TypeBar1> | Partial<TypeBar2>
if (value.type !== undefined) {
>value.type !== undefined : boolean
>value.type : BarEnum | undefined
>value : Partial<TypeBar1> | Partial<TypeBar2>
>type : BarEnum | undefined
>undefined : undefined
switch (value.type) {
>value.type : BarEnum
>value : Partial<TypeBar1> | Partial<TypeBar2>
>type : BarEnum
case BarEnum.bar1:
>BarEnum.bar1 : BarEnum.bar1
>BarEnum : typeof BarEnum
>bar1 : BarEnum.bar1
break;
case BarEnum.bar2:
>BarEnum.bar2 : BarEnum.bar2
>BarEnum : typeof BarEnum
>bar2 : BarEnum.bar2
break;
default:
never(value.type);
>never(value.type) : never
>never : (value: never) => never
>value.type : never
>value : Partial<TypeBar1> | Partial<TypeBar2>
>type : never
}
}
}