Skip to content

Commit 854229a

Browse files
committed
Add regression test
1 parent 5eab242 commit 854229a

File tree

5 files changed

+40
-0
lines changed

5 files changed

+40
-0
lines changed

tests/baselines/reference/conditionalTypes2.errors.txt

+6
Original file line numberDiff line numberDiff line change
@@ -326,4 +326,10 @@ tests/cases/conformance/types/conditional/conditionalTypes2.ts(75,12): error TS2
326326
declare function gg<T>(f: (x: Foo3<T>) => void): void;
327327
type Foo3<T> = T extends number ? { n: T } : { x: T };
328328
gg(ff);
329+
330+
// Repro from 39364
331+
332+
type StringOrNumber<T extends () => any> = [ReturnType<T>] extends [string] ? string : number;
333+
334+
type Test = StringOrNumber<() => number>; // number
329335

tests/baselines/reference/conditionalTypes2.js

+8
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,12 @@ declare function ff(x: Foo3<string>): void;
237237
declare function gg<T>(f: (x: Foo3<T>) => void): void;
238238
type Foo3<T> = T extends number ? { n: T } : { x: T };
239239
gg(ff);
240+
241+
// Repro from 39364
242+
243+
type StringOrNumber<T extends () => any> = [ReturnType<T>] extends [string] ? string : number;
244+
245+
type Test = StringOrNumber<() => number>; // number
240246

241247

242248
//// [conditionalTypes2.js]
@@ -477,3 +483,5 @@ declare type Foo3<T> = T extends number ? {
477483
} : {
478484
x: T;
479485
};
486+
declare type StringOrNumber<T extends () => any> = [ReturnType<T>] extends [string] ? string : number;
487+
declare type Test = StringOrNumber<() => number>;

tests/baselines/reference/conditionalTypes2.symbols

+12
Original file line numberDiff line numberDiff line change
@@ -841,3 +841,15 @@ gg(ff);
841841
>gg : Symbol(gg, Decl(conditionalTypes2.ts, 234, 43))
842842
>ff : Symbol(ff, Decl(conditionalTypes2.ts, 230, 2))
843843

844+
// Repro from 39364
845+
846+
type StringOrNumber<T extends () => any> = [ReturnType<T>] extends [string] ? string : number;
847+
>StringOrNumber : Symbol(StringOrNumber, Decl(conditionalTypes2.ts, 237, 7))
848+
>T : Symbol(T, Decl(conditionalTypes2.ts, 241, 20))
849+
>ReturnType : Symbol(ReturnType, Decl(lib.es5.d.ts, --, --))
850+
>T : Symbol(T, Decl(conditionalTypes2.ts, 241, 20))
851+
852+
type Test = StringOrNumber<() => number>; // number
853+
>Test : Symbol(Test, Decl(conditionalTypes2.ts, 241, 94))
854+
>StringOrNumber : Symbol(StringOrNumber, Decl(conditionalTypes2.ts, 237, 7))
855+

tests/baselines/reference/conditionalTypes2.types

+8
Original file line numberDiff line numberDiff line change
@@ -527,3 +527,11 @@ gg(ff);
527527
>gg : <T>(f: (x: Foo3<T>) => void) => void
528528
>ff : (x: { x: string; }) => void
529529

530+
// Repro from 39364
531+
532+
type StringOrNumber<T extends () => any> = [ReturnType<T>] extends [string] ? string : number;
533+
>StringOrNumber : StringOrNumber<T>
534+
535+
type Test = StringOrNumber<() => number>; // number
536+
>Test : number
537+

tests/cases/conformance/types/conditional/conditionalTypes2.ts

+6
Original file line numberDiff line numberDiff line change
@@ -239,3 +239,9 @@ declare function ff(x: Foo3<string>): void;
239239
declare function gg<T>(f: (x: Foo3<T>) => void): void;
240240
type Foo3<T> = T extends number ? { n: T } : { x: T };
241241
gg(ff);
242+
243+
// Repro from 39364
244+
245+
type StringOrNumber<T extends () => any> = [ReturnType<T>] extends [string] ? string : number;
246+
247+
type Test = StringOrNumber<() => number>; // number

0 commit comments

Comments
 (0)