Skip to content

Commit 936ee9b

Browse files
committed
Accept new baselines
1 parent 500c472 commit 936ee9b

File tree

4 files changed

+217
-35
lines changed

4 files changed

+217
-35
lines changed

tests/baselines/reference/discriminantPropertyCheck.errors.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,34 @@ tests/cases/compiler/discriminantPropertyCheck.ts(65,9): error TS2532: Object is
129129

130130
u.b && u.a && f(u.a, u.b);
131131

132+
// Repro from #29012
133+
134+
type Additive = '+' | '-';
135+
type Multiplicative = '*' | '/';
136+
137+
interface AdditiveObj {
138+
key: Additive
139+
}
140+
141+
interface MultiplicativeObj {
142+
key: Multiplicative
143+
}
144+
145+
type Obj = AdditiveObj | MultiplicativeObj
146+
147+
export function foo(obj: Obj) {
148+
switch (obj.key) {
149+
case '+': {
150+
onlyPlus(obj.key);
151+
return;
152+
}
153+
}
154+
}
155+
156+
function onlyPlus(arg: '+') {
157+
return arg;
158+
}
159+
132160
// Repro from #29496
133161

134162
declare function never(value: never): never;

tests/baselines/reference/discriminantPropertyCheck.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,34 @@ u.a && u.b && f(u.a, u.b);
121121

122122
u.b && u.a && f(u.a, u.b);
123123

124+
// Repro from #29012
125+
126+
type Additive = '+' | '-';
127+
type Multiplicative = '*' | '/';
128+
129+
interface AdditiveObj {
130+
key: Additive
131+
}
132+
133+
interface MultiplicativeObj {
134+
key: Multiplicative
135+
}
136+
137+
type Obj = AdditiveObj | MultiplicativeObj
138+
139+
export function foo(obj: Obj) {
140+
switch (obj.key) {
141+
case '+': {
142+
onlyPlus(obj.key);
143+
return;
144+
}
145+
}
146+
}
147+
148+
function onlyPlus(arg: '+') {
149+
return arg;
150+
}
151+
124152
// Repro from #29496
125153

126154
declare function never(value: never): never;
@@ -149,6 +177,8 @@ function func3(value: Partial<UnionOfBar>) {
149177

150178

151179
//// [discriminantPropertyCheck.js]
180+
"use strict";
181+
exports.__esModule = true;
152182
function goo1(x) {
153183
if (x.kind === "A" && x.foo !== undefined) {
154184
x.foo.length;
@@ -214,6 +244,18 @@ var f = function (_a, _b) { };
214244
var u = {};
215245
u.a && u.b && f(u.a, u.b);
216246
u.b && u.a && f(u.a, u.b);
247+
function foo(obj) {
248+
switch (obj.key) {
249+
case '+': {
250+
onlyPlus(obj.key);
251+
return;
252+
}
253+
}
254+
}
255+
exports.foo = foo;
256+
function onlyPlus(arg) {
257+
return arg;
258+
}
217259
function func3(value) {
218260
if (value.type !== undefined) {
219261
switch (value.type) {

tests/baselines/reference/discriminantPropertyCheck.symbols

Lines changed: 94 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -377,74 +377,133 @@ 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 #29012
381+
382+
type Additive = '+' | '-';
383+
>Additive : Symbol(Additive, Decl(discriminantPropertyCheck.ts, 120, 26))
384+
385+
type Multiplicative = '*' | '/';
386+
>Multiplicative : Symbol(Multiplicative, Decl(discriminantPropertyCheck.ts, 124, 26))
387+
388+
interface AdditiveObj {
389+
>AdditiveObj : Symbol(AdditiveObj, Decl(discriminantPropertyCheck.ts, 125, 32))
390+
391+
key: Additive
392+
>key : Symbol(AdditiveObj.key, Decl(discriminantPropertyCheck.ts, 127, 23))
393+
>Additive : Symbol(Additive, Decl(discriminantPropertyCheck.ts, 120, 26))
394+
}
395+
396+
interface MultiplicativeObj {
397+
>MultiplicativeObj : Symbol(MultiplicativeObj, Decl(discriminantPropertyCheck.ts, 129, 1))
398+
399+
key: Multiplicative
400+
>key : Symbol(MultiplicativeObj.key, Decl(discriminantPropertyCheck.ts, 131, 29))
401+
>Multiplicative : Symbol(Multiplicative, Decl(discriminantPropertyCheck.ts, 124, 26))
402+
}
403+
404+
type Obj = AdditiveObj | MultiplicativeObj
405+
>Obj : Symbol(Obj, Decl(discriminantPropertyCheck.ts, 133, 1))
406+
>AdditiveObj : Symbol(AdditiveObj, Decl(discriminantPropertyCheck.ts, 125, 32))
407+
>MultiplicativeObj : Symbol(MultiplicativeObj, Decl(discriminantPropertyCheck.ts, 129, 1))
408+
409+
export function foo(obj: Obj) {
410+
>foo : Symbol(foo, Decl(discriminantPropertyCheck.ts, 135, 42))
411+
>obj : Symbol(obj, Decl(discriminantPropertyCheck.ts, 137, 20))
412+
>Obj : Symbol(Obj, Decl(discriminantPropertyCheck.ts, 133, 1))
413+
414+
switch (obj.key) {
415+
>obj.key : Symbol(key, Decl(discriminantPropertyCheck.ts, 127, 23), Decl(discriminantPropertyCheck.ts, 131, 29))
416+
>obj : Symbol(obj, Decl(discriminantPropertyCheck.ts, 137, 20))
417+
>key : Symbol(key, Decl(discriminantPropertyCheck.ts, 127, 23), Decl(discriminantPropertyCheck.ts, 131, 29))
418+
419+
case '+': {
420+
onlyPlus(obj.key);
421+
>onlyPlus : Symbol(onlyPlus, Decl(discriminantPropertyCheck.ts, 144, 1))
422+
>obj.key : Symbol(AdditiveObj.key, Decl(discriminantPropertyCheck.ts, 127, 23))
423+
>obj : Symbol(obj, Decl(discriminantPropertyCheck.ts, 137, 20))
424+
>key : Symbol(AdditiveObj.key, Decl(discriminantPropertyCheck.ts, 127, 23))
425+
426+
return;
427+
}
428+
}
429+
}
430+
431+
function onlyPlus(arg: '+') {
432+
>onlyPlus : Symbol(onlyPlus, Decl(discriminantPropertyCheck.ts, 144, 1))
433+
>arg : Symbol(arg, Decl(discriminantPropertyCheck.ts, 146, 18))
434+
435+
return arg;
436+
>arg : Symbol(arg, Decl(discriminantPropertyCheck.ts, 146, 18))
437+
}
438+
380439
// Repro from #29496
381440

382441
declare function never(value: never): never;
383-
>never : Symbol(never, Decl(discriminantPropertyCheck.ts, 120, 26))
384-
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 124, 23))
442+
>never : Symbol(never, Decl(discriminantPropertyCheck.ts, 148, 1))
443+
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 152, 23))
385444

386445
const enum BarEnum {
387-
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 124, 44))
446+
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 152, 44))
388447

389448
bar1 = 1,
390-
>bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 126, 20))
449+
>bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 154, 20))
391450

392451
bar2 = 2,
393-
>bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 127, 13))
452+
>bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 155, 13))
394453
}
395454

396455
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))
456+
>UnionOfBar : Symbol(UnionOfBar, Decl(discriminantPropertyCheck.ts, 157, 1))
457+
>TypeBar1 : Symbol(TypeBar1, Decl(discriminantPropertyCheck.ts, 159, 38))
458+
>TypeBar2 : Symbol(TypeBar2, Decl(discriminantPropertyCheck.ts, 160, 39))
400459

401460
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))
461+
>TypeBar1 : Symbol(TypeBar1, Decl(discriminantPropertyCheck.ts, 159, 38))
462+
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 160, 17))
463+
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 152, 44))
464+
>bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 154, 20))
406465

407466
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))
467+
>TypeBar2 : Symbol(TypeBar2, Decl(discriminantPropertyCheck.ts, 160, 39))
468+
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 161, 17))
469+
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 152, 44))
470+
>bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 155, 13))
412471

413472
function func3(value: Partial<UnionOfBar>) {
414-
>func3 : Symbol(func3, Decl(discriminantPropertyCheck.ts, 133, 39))
415-
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 135, 15))
473+
>func3 : Symbol(func3, Decl(discriminantPropertyCheck.ts, 161, 39))
474+
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 163, 15))
416475
>Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --))
417-
>UnionOfBar : Symbol(UnionOfBar, Decl(discriminantPropertyCheck.ts, 129, 1))
476+
>UnionOfBar : Symbol(UnionOfBar, Decl(discriminantPropertyCheck.ts, 157, 1))
418477

419478
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))
479+
>value.type : Symbol(type, Decl(discriminantPropertyCheck.ts, 160, 17), Decl(discriminantPropertyCheck.ts, 161, 17))
480+
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 163, 15))
481+
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 160, 17), Decl(discriminantPropertyCheck.ts, 161, 17))
423482
>undefined : Symbol(undefined)
424483

425484
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))
485+
>value.type : Symbol(type, Decl(discriminantPropertyCheck.ts, 160, 17), Decl(discriminantPropertyCheck.ts, 161, 17))
486+
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 163, 15))
487+
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 160, 17), Decl(discriminantPropertyCheck.ts, 161, 17))
429488

430489
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))
490+
>BarEnum.bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 154, 20))
491+
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 152, 44))
492+
>bar1 : Symbol(BarEnum.bar1, Decl(discriminantPropertyCheck.ts, 154, 20))
434493

435494
break;
436495
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))
496+
>BarEnum.bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 155, 13))
497+
>BarEnum : Symbol(BarEnum, Decl(discriminantPropertyCheck.ts, 152, 44))
498+
>bar2 : Symbol(BarEnum.bar2, Decl(discriminantPropertyCheck.ts, 155, 13))
440499

441500
break;
442501
default:
443502
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))
503+
>never : Symbol(never, Decl(discriminantPropertyCheck.ts, 148, 1))
504+
>value.type : Symbol(type, Decl(discriminantPropertyCheck.ts, 160, 17), Decl(discriminantPropertyCheck.ts, 161, 17))
505+
>value : Symbol(value, Decl(discriminantPropertyCheck.ts, 163, 15))
506+
>type : Symbol(type, Decl(discriminantPropertyCheck.ts, 160, 17), Decl(discriminantPropertyCheck.ts, 161, 17))
448507
}
449508
}
450509
}

tests/baselines/reference/discriminantPropertyCheck.types

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

381+
// Repro from #29012
382+
383+
type Additive = '+' | '-';
384+
>Additive : Additive
385+
386+
type Multiplicative = '*' | '/';
387+
>Multiplicative : Multiplicative
388+
389+
interface AdditiveObj {
390+
key: Additive
391+
>key : Additive
392+
}
393+
394+
interface MultiplicativeObj {
395+
key: Multiplicative
396+
>key : Multiplicative
397+
}
398+
399+
type Obj = AdditiveObj | MultiplicativeObj
400+
>Obj : Obj
401+
402+
export function foo(obj: Obj) {
403+
>foo : (obj: Obj) => void
404+
>obj : Obj
405+
406+
switch (obj.key) {
407+
>obj.key : "+" | "-" | "*" | "/"
408+
>obj : Obj
409+
>key : "+" | "-" | "*" | "/"
410+
411+
case '+': {
412+
>'+' : "+"
413+
414+
onlyPlus(obj.key);
415+
>onlyPlus(obj.key) : "+"
416+
>onlyPlus : (arg: "+") => "+"
417+
>obj.key : "+"
418+
>obj : AdditiveObj
419+
>key : "+"
420+
421+
return;
422+
}
423+
}
424+
}
425+
426+
function onlyPlus(arg: '+') {
427+
>onlyPlus : (arg: "+") => "+"
428+
>arg : "+"
429+
430+
return arg;
431+
>arg : "+"
432+
}
433+
381434
// Repro from #29496
382435

383436
declare function never(value: never): never;

0 commit comments

Comments
 (0)