File tree Expand file tree Collapse file tree
tests/cases/conformance/types/conditional Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -226,3 +226,33 @@ type T80 = Eq2<true, true>; // true
226226type T81 = Eq2 < true , false > ; // false
227227type T82 = Eq2 < false , true > ; // false
228228type T83 = Eq2 < false , false > ; // true
229+
230+ // Repro from #21756
231+
232+ type Foo < T > = T extends string ? boolean : number ;
233+ type Bar < T > = T extends string ? boolean : number ;
234+ const convert = < U > ( value : Foo < U > ) : Bar < U > => value ;
235+
236+ type Baz < T > = Foo < T > ;
237+ const convert2 = < T > ( value : Foo < T > ) : Baz < T > => value ;
238+
239+ function f31 < T > ( ) {
240+ type T1 = T extends string ? boolean : number ;
241+ type T2 = T extends string ? boolean : number ;
242+ var x : T1 ;
243+ var x : T2 ;
244+ }
245+
246+ function f32 < T , U > ( ) {
247+ type T1 = T & U extends string ? boolean : number ;
248+ type T2 = Foo < T & U > ;
249+ var z : T1 ;
250+ var z : T2 ; // Error, T2 is distributive, T1 isn't
251+ }
252+
253+ function f33 < T , U > ( ) {
254+ type T1 = Foo < T & U > ;
255+ type T2 = Bar < T & U > ;
256+ var z : T1 ;
257+ var z : T2 ;
258+ }
You can’t perform that action at this time.
0 commit comments