Skip to content

Commit ba2f465

Browse files
committed
add an extra test case
1 parent 7254931 commit ba2f465

File tree

3 files changed

+141
-0
lines changed

3 files changed

+141
-0
lines changed

tests/baselines/reference/reverseMappedTupleContext.symbols

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,67 @@ const created2 = create({
8282

8383
});
8484

85+
interface CompilerOptions {
86+
>CompilerOptions : Symbol(CompilerOptions, Decl(reverseMappedTupleContext.ts, 21, 3))
87+
88+
allowUnreachableCode?: boolean;
89+
>allowUnreachableCode : Symbol(CompilerOptions.allowUnreachableCode, Decl(reverseMappedTupleContext.ts, 23, 27))
90+
91+
allowUnusedLabels?: boolean;
92+
>allowUnusedLabels : Symbol(CompilerOptions.allowUnusedLabels, Decl(reverseMappedTupleContext.ts, 24, 33))
93+
94+
alwaysStrict?: boolean;
95+
>alwaysStrict : Symbol(CompilerOptions.alwaysStrict, Decl(reverseMappedTupleContext.ts, 25, 30))
96+
}
97+
type KeepLiteralStrings<T extends string[]> = {
98+
>KeepLiteralStrings : Symbol(KeepLiteralStrings, Decl(reverseMappedTupleContext.ts, 27, 1))
99+
>T : Symbol(T, Decl(reverseMappedTupleContext.ts, 28, 24))
100+
101+
[K in keyof T]: T[K];
102+
>K : Symbol(K, Decl(reverseMappedTupleContext.ts, 29, 3))
103+
>T : Symbol(T, Decl(reverseMappedTupleContext.ts, 28, 24))
104+
>T : Symbol(T, Decl(reverseMappedTupleContext.ts, 28, 24))
105+
>K : Symbol(K, Decl(reverseMappedTupleContext.ts, 29, 3))
106+
107+
};
108+
declare function test4<T extends Record<string, string[]>>(obj: {
109+
>test4 : Symbol(test4, Decl(reverseMappedTupleContext.ts, 30, 2))
110+
>T : Symbol(T, Decl(reverseMappedTupleContext.ts, 31, 23))
111+
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
112+
>obj : Symbol(obj, Decl(reverseMappedTupleContext.ts, 31, 59))
113+
114+
[K in keyof T & keyof CompilerOptions]: {
115+
>K : Symbol(K, Decl(reverseMappedTupleContext.ts, 32, 3))
116+
>T : Symbol(T, Decl(reverseMappedTupleContext.ts, 31, 23))
117+
>CompilerOptions : Symbol(CompilerOptions, Decl(reverseMappedTupleContext.ts, 21, 3))
118+
119+
dependencies: KeepLiteralStrings<T[K]>;
120+
>dependencies : Symbol(dependencies, Decl(reverseMappedTupleContext.ts, 32, 43))
121+
>KeepLiteralStrings : Symbol(KeepLiteralStrings, Decl(reverseMappedTupleContext.ts, 27, 1))
122+
>T : Symbol(T, Decl(reverseMappedTupleContext.ts, 31, 23))
123+
>K : Symbol(K, Decl(reverseMappedTupleContext.ts, 32, 3))
124+
125+
};
126+
}): T;
127+
>T : Symbol(T, Decl(reverseMappedTupleContext.ts, 31, 23))
128+
129+
const result4 = test4({
130+
>result4 : Symbol(result4, Decl(reverseMappedTupleContext.ts, 36, 5))
131+
>test4 : Symbol(test4, Decl(reverseMappedTupleContext.ts, 30, 2))
132+
133+
alwaysStrict: {
134+
>alwaysStrict : Symbol(alwaysStrict, Decl(reverseMappedTupleContext.ts, 36, 23))
135+
136+
dependencies: ["foo", "bar"],
137+
>dependencies : Symbol(dependencies, Decl(reverseMappedTupleContext.ts, 37, 17))
138+
139+
},
140+
allowUnusedLabels: {
141+
>allowUnusedLabels : Symbol(allowUnusedLabels, Decl(reverseMappedTupleContext.ts, 39, 4))
142+
143+
dependencies: ["baz", "qwe"],
144+
>dependencies : Symbol(dependencies, Decl(reverseMappedTupleContext.ts, 40, 22))
145+
146+
},
147+
});
148+

tests/baselines/reference/reverseMappedTupleContext.types

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,58 @@ const created2 = create({
7373

7474
});
7575

76+
interface CompilerOptions {
77+
allowUnreachableCode?: boolean;
78+
>allowUnreachableCode : boolean | undefined
79+
80+
allowUnusedLabels?: boolean;
81+
>allowUnusedLabels : boolean | undefined
82+
83+
alwaysStrict?: boolean;
84+
>alwaysStrict : boolean | undefined
85+
}
86+
type KeepLiteralStrings<T extends string[]> = {
87+
>KeepLiteralStrings : KeepLiteralStrings<T>
88+
89+
[K in keyof T]: T[K];
90+
};
91+
declare function test4<T extends Record<string, string[]>>(obj: {
92+
>test4 : <T extends Record<string, string[]>>(obj: { [K in keyof T & keyof CompilerOptions]: { dependencies: KeepLiteralStrings<T[K]>; }; }) => T
93+
>obj : { [K in keyof T & keyof CompilerOptions]: { dependencies: KeepLiteralStrings<T[K]>; }; }
94+
95+
[K in keyof T & keyof CompilerOptions]: {
96+
dependencies: KeepLiteralStrings<T[K]>;
97+
>dependencies : KeepLiteralStrings<T[K]>
98+
99+
};
100+
}): T;
101+
const result4 = test4({
102+
>result4 : { alwaysStrict: ["foo", "bar"]; allowUnusedLabels: ["baz", "qwe"]; }
103+
>test4({ alwaysStrict: { dependencies: ["foo", "bar"], }, allowUnusedLabels: { dependencies: ["baz", "qwe"], },}) : { alwaysStrict: ["foo", "bar"]; allowUnusedLabels: ["baz", "qwe"]; }
104+
>test4 : <T extends Record<string, string[]>>(obj: { [K in keyof T & keyof CompilerOptions]: { dependencies: KeepLiteralStrings<T[K]>; }; }) => T
105+
>{ alwaysStrict: { dependencies: ["foo", "bar"], }, allowUnusedLabels: { dependencies: ["baz", "qwe"], },} : { alwaysStrict: { dependencies: ["foo", "bar"]; }; allowUnusedLabels: { dependencies: ["baz", "qwe"]; }; }
106+
107+
alwaysStrict: {
108+
>alwaysStrict : { dependencies: ["foo", "bar"]; }
109+
>{ dependencies: ["foo", "bar"], } : { dependencies: ["foo", "bar"]; }
110+
111+
dependencies: ["foo", "bar"],
112+
>dependencies : ["foo", "bar"]
113+
>["foo", "bar"] : ["foo", "bar"]
114+
>"foo" : "foo"
115+
>"bar" : "bar"
116+
117+
},
118+
allowUnusedLabels: {
119+
>allowUnusedLabels : { dependencies: ["baz", "qwe"]; }
120+
>{ dependencies: ["baz", "qwe"], } : { dependencies: ["baz", "qwe"]; }
121+
122+
dependencies: ["baz", "qwe"],
123+
>dependencies : ["baz", "qwe"]
124+
>["baz", "qwe"] : ["baz", "qwe"]
125+
>"baz" : "baz"
126+
>"qwe" : "qwe"
127+
128+
},
129+
});
130+

tests/cases/compiler/reverseMappedTupleContext.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,25 @@ const created2 = create({
2323
a: () => 1,
2424
b: [() => ""],
2525
});
26+
27+
interface CompilerOptions {
28+
allowUnreachableCode?: boolean;
29+
allowUnusedLabels?: boolean;
30+
alwaysStrict?: boolean;
31+
}
32+
type KeepLiteralStrings<T extends string[]> = {
33+
[K in keyof T]: T[K];
34+
};
35+
declare function test4<T extends Record<string, string[]>>(obj: {
36+
[K in keyof T & keyof CompilerOptions]: {
37+
dependencies: KeepLiteralStrings<T[K]>;
38+
};
39+
}): T;
40+
const result4 = test4({
41+
alwaysStrict: {
42+
dependencies: ["foo", "bar"],
43+
},
44+
allowUnusedLabels: {
45+
dependencies: ["baz", "qwe"],
46+
},
47+
});

0 commit comments

Comments
 (0)