Skip to content

Commit 47cb9bc

Browse files
committed
add regression test
1 parent 6b04aef commit 47cb9bc

File tree

3 files changed

+91
-0
lines changed

3 files changed

+91
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
//// [tests/cases/compiler/mappedTypeInferenceFromApparentType.ts] ////
2+
3+
=== mappedTypeInferenceFromApparentType.ts ===
4+
type Obj = {
5+
>Obj : Symbol(Obj, Decl(mappedTypeInferenceFromApparentType.ts, 0, 0))
6+
7+
[s: string]: number;
8+
>s : Symbol(s, Decl(mappedTypeInferenceFromApparentType.ts, 1, 5))
9+
10+
[u: symbol]: boolean;
11+
>u : Symbol(u, Decl(mappedTypeInferenceFromApparentType.ts, 2, 5))
12+
13+
};
14+
15+
type foo = <T>(target: { [K in keyof T]: T[K] }) => void;
16+
>foo : Symbol(foo, Decl(mappedTypeInferenceFromApparentType.ts, 3, 2))
17+
>T : Symbol(T, Decl(mappedTypeInferenceFromApparentType.ts, 5, 12))
18+
>target : Symbol(target, Decl(mappedTypeInferenceFromApparentType.ts, 5, 15))
19+
>K : Symbol(K, Decl(mappedTypeInferenceFromApparentType.ts, 5, 26))
20+
>T : Symbol(T, Decl(mappedTypeInferenceFromApparentType.ts, 5, 12))
21+
>T : Symbol(T, Decl(mappedTypeInferenceFromApparentType.ts, 5, 12))
22+
>K : Symbol(K, Decl(mappedTypeInferenceFromApparentType.ts, 5, 26))
23+
24+
type bar = <U extends string[]>(source: { [K in keyof U]: Obj[K] }) => void;
25+
>bar : Symbol(bar, Decl(mappedTypeInferenceFromApparentType.ts, 5, 57))
26+
>U : Symbol(U, Decl(mappedTypeInferenceFromApparentType.ts, 6, 12))
27+
>source : Symbol(source, Decl(mappedTypeInferenceFromApparentType.ts, 6, 32))
28+
>K : Symbol(K, Decl(mappedTypeInferenceFromApparentType.ts, 6, 43))
29+
>U : Symbol(U, Decl(mappedTypeInferenceFromApparentType.ts, 6, 12))
30+
>Obj : Symbol(Obj, Decl(mappedTypeInferenceFromApparentType.ts, 0, 0))
31+
>K : Symbol(K, Decl(mappedTypeInferenceFromApparentType.ts, 6, 43))
32+
33+
declare let f: foo;
34+
>f : Symbol(f, Decl(mappedTypeInferenceFromApparentType.ts, 8, 11))
35+
>foo : Symbol(foo, Decl(mappedTypeInferenceFromApparentType.ts, 3, 2))
36+
37+
declare let b: bar;
38+
>b : Symbol(b, Decl(mappedTypeInferenceFromApparentType.ts, 9, 11))
39+
>bar : Symbol(bar, Decl(mappedTypeInferenceFromApparentType.ts, 5, 57))
40+
41+
b = f;
42+
>b : Symbol(b, Decl(mappedTypeInferenceFromApparentType.ts, 9, 11))
43+
>f : Symbol(f, Decl(mappedTypeInferenceFromApparentType.ts, 8, 11))
44+
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//// [tests/cases/compiler/mappedTypeInferenceFromApparentType.ts] ////
2+
3+
=== mappedTypeInferenceFromApparentType.ts ===
4+
type Obj = {
5+
>Obj : { [s: string]: number; [u: symbol]: boolean; }
6+
7+
[s: string]: number;
8+
>s : string
9+
10+
[u: symbol]: boolean;
11+
>u : symbol
12+
13+
};
14+
15+
type foo = <T>(target: { [K in keyof T]: T[K] }) => void;
16+
>foo : <T>(target: { [K in keyof T]: T[K]; }) => void
17+
>target : { [K in keyof T]: T[K]; }
18+
19+
type bar = <U extends string[]>(source: { [K in keyof U]: Obj[K] }) => void;
20+
>bar : <U extends string[]>(source: { [K in keyof U]: Obj[K]; }) => void
21+
>source : { [K in keyof U]: Obj[K]; }
22+
23+
declare let f: foo;
24+
>f : foo
25+
26+
declare let b: bar;
27+
>b : bar
28+
29+
b = f;
30+
>b = f : foo
31+
>b : bar
32+
>f : foo
33+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// @strict: true
2+
// @noEmit: true
3+
4+
type Obj = {
5+
[s: string]: number;
6+
[u: symbol]: boolean;
7+
};
8+
9+
type foo = <T>(target: { [K in keyof T]: T[K] }) => void;
10+
type bar = <U extends string[]>(source: { [K in keyof U]: Obj[K] }) => void;
11+
12+
declare let f: foo;
13+
declare let b: bar;
14+
b = f;

0 commit comments

Comments
 (0)