Skip to content

Commit 7e4592e

Browse files
authored
Add an extra test case for deferred conditional types (#53067)
1 parent 61a8e2c commit 7e4592e

File tree

4 files changed

+78
-1
lines changed

4 files changed

+78
-1
lines changed

tests/baselines/reference/deferredConditionalTypes.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,19 @@ type FilteredValuesMatchNever<O extends object>
3939
= Equals<Values<FilterByStringValue<[O]>>, never>
4040

4141
type FilteredRes1 = FilteredValuesMatchNever<[]>
42-
42+
43+
// repro from #46761
44+
45+
type Bit = 0 | 1;
46+
47+
type AndBit<A extends Bit, B extends Bit> = [A, B] extends [1, 1] ? 1 : 0;
48+
49+
type TestBit<A extends Bit, B extends Bit> = AndBit<
50+
A extends 1 ? 0 : 1,
51+
B extends 1 ? 0 : 1
52+
>;
53+
54+
type TestBitRes = TestBit<1, 1>;
4355

4456
//// [deferredConditionalTypes.js]
4557
"use strict";

tests/baselines/reference/deferredConditionalTypes.symbols

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,37 @@ type FilteredRes1 = FilteredValuesMatchNever<[]>
155155
>FilteredRes1 : Symbol(FilteredRes1, Decl(deferredConditionalTypes.ts, 37, 51))
156156
>FilteredValuesMatchNever : Symbol(FilteredValuesMatchNever, Decl(deferredConditionalTypes.ts, 34, 1))
157157

158+
// repro from #46761
159+
160+
type Bit = 0 | 1;
161+
>Bit : Symbol(Bit, Decl(deferredConditionalTypes.ts, 39, 48))
162+
163+
type AndBit<A extends Bit, B extends Bit> = [A, B] extends [1, 1] ? 1 : 0;
164+
>AndBit : Symbol(AndBit, Decl(deferredConditionalTypes.ts, 43, 17))
165+
>A : Symbol(A, Decl(deferredConditionalTypes.ts, 45, 12))
166+
>Bit : Symbol(Bit, Decl(deferredConditionalTypes.ts, 39, 48))
167+
>B : Symbol(B, Decl(deferredConditionalTypes.ts, 45, 26))
168+
>Bit : Symbol(Bit, Decl(deferredConditionalTypes.ts, 39, 48))
169+
>A : Symbol(A, Decl(deferredConditionalTypes.ts, 45, 12))
170+
>B : Symbol(B, Decl(deferredConditionalTypes.ts, 45, 26))
171+
172+
type TestBit<A extends Bit, B extends Bit> = AndBit<
173+
>TestBit : Symbol(TestBit, Decl(deferredConditionalTypes.ts, 45, 74))
174+
>A : Symbol(A, Decl(deferredConditionalTypes.ts, 47, 13))
175+
>Bit : Symbol(Bit, Decl(deferredConditionalTypes.ts, 39, 48))
176+
>B : Symbol(B, Decl(deferredConditionalTypes.ts, 47, 27))
177+
>Bit : Symbol(Bit, Decl(deferredConditionalTypes.ts, 39, 48))
178+
>AndBit : Symbol(AndBit, Decl(deferredConditionalTypes.ts, 43, 17))
179+
180+
A extends 1 ? 0 : 1,
181+
>A : Symbol(A, Decl(deferredConditionalTypes.ts, 47, 13))
182+
183+
B extends 1 ? 0 : 1
184+
>B : Symbol(B, Decl(deferredConditionalTypes.ts, 47, 27))
185+
186+
>;
187+
188+
type TestBitRes = TestBit<1, 1>;
189+
>TestBitRes : Symbol(TestBitRes, Decl(deferredConditionalTypes.ts, 50, 2))
190+
>TestBit : Symbol(TestBit, Decl(deferredConditionalTypes.ts, 45, 74))
191+

tests/baselines/reference/deferredConditionalTypes.types

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,21 @@ type FilteredValuesMatchNever<O extends object>
9090
type FilteredRes1 = FilteredValuesMatchNever<[]>
9191
>FilteredRes1 : true
9292

93+
// repro from #46761
94+
95+
type Bit = 0 | 1;
96+
>Bit : 0 | 1
97+
98+
type AndBit<A extends Bit, B extends Bit> = [A, B] extends [1, 1] ? 1 : 0;
99+
>AndBit : AndBit<A, B>
100+
101+
type TestBit<A extends Bit, B extends Bit> = AndBit<
102+
>TestBit : TestBit<A, B>
103+
104+
A extends 1 ? 0 : 1,
105+
B extends 1 ? 0 : 1
106+
>;
107+
108+
type TestBitRes = TestBit<1, 1>;
109+
>TestBitRes : 0
110+

tests/cases/compiler/deferredConditionalTypes.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,16 @@ type FilteredValuesMatchNever<O extends object>
4040
= Equals<Values<FilterByStringValue<[O]>>, never>
4141

4242
type FilteredRes1 = FilteredValuesMatchNever<[]>
43+
44+
// repro from #46761
45+
46+
type Bit = 0 | 1;
47+
48+
type AndBit<A extends Bit, B extends Bit> = [A, B] extends [1, 1] ? 1 : 0;
49+
50+
type TestBit<A extends Bit, B extends Bit> = AndBit<
51+
A extends 1 ? 0 : 1,
52+
B extends 1 ? 0 : 1
53+
>;
54+
55+
type TestBitRes = TestBit<1, 1>;

0 commit comments

Comments
 (0)