Skip to content

Commit 791f56d

Browse files
committed
Accept new baselines
1 parent 8cd5d61 commit 791f56d

File tree

3 files changed

+131
-0
lines changed

3 files changed

+131
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//// [genericFunctionInference2.ts]
2+
// Repro from #30685
3+
4+
type Reducer<S> = (state: S) => S;
5+
declare function combineReducers<S>(reducers: { [K in keyof S]: Reducer<S[K]> }): Reducer<S>;
6+
7+
type MyState = { combined: { foo: number } };
8+
declare const foo: Reducer<MyState['combined']['foo']>;
9+
10+
const myReducer1: Reducer<MyState> = combineReducers({
11+
combined: combineReducers({ foo }),
12+
});
13+
14+
const myReducer2 = combineReducers({
15+
combined: combineReducers({ foo }),
16+
});
17+
18+
19+
//// [genericFunctionInference2.js]
20+
// Repro from #30685
21+
var myReducer1 = combineReducers({
22+
combined: combineReducers({ foo: foo })
23+
});
24+
var myReducer2 = combineReducers({
25+
combined: combineReducers({ foo: foo })
26+
});
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
=== tests/cases/compiler/genericFunctionInference2.ts ===
2+
// Repro from #30685
3+
4+
type Reducer<S> = (state: S) => S;
5+
>Reducer : Symbol(Reducer, Decl(genericFunctionInference2.ts, 0, 0))
6+
>S : Symbol(S, Decl(genericFunctionInference2.ts, 2, 13))
7+
>state : Symbol(state, Decl(genericFunctionInference2.ts, 2, 19))
8+
>S : Symbol(S, Decl(genericFunctionInference2.ts, 2, 13))
9+
>S : Symbol(S, Decl(genericFunctionInference2.ts, 2, 13))
10+
11+
declare function combineReducers<S>(reducers: { [K in keyof S]: Reducer<S[K]> }): Reducer<S>;
12+
>combineReducers : Symbol(combineReducers, Decl(genericFunctionInference2.ts, 2, 34))
13+
>S : Symbol(S, Decl(genericFunctionInference2.ts, 3, 33))
14+
>reducers : Symbol(reducers, Decl(genericFunctionInference2.ts, 3, 36))
15+
>K : Symbol(K, Decl(genericFunctionInference2.ts, 3, 49))
16+
>S : Symbol(S, Decl(genericFunctionInference2.ts, 3, 33))
17+
>Reducer : Symbol(Reducer, Decl(genericFunctionInference2.ts, 0, 0))
18+
>S : Symbol(S, Decl(genericFunctionInference2.ts, 3, 33))
19+
>K : Symbol(K, Decl(genericFunctionInference2.ts, 3, 49))
20+
>Reducer : Symbol(Reducer, Decl(genericFunctionInference2.ts, 0, 0))
21+
>S : Symbol(S, Decl(genericFunctionInference2.ts, 3, 33))
22+
23+
type MyState = { combined: { foo: number } };
24+
>MyState : Symbol(MyState, Decl(genericFunctionInference2.ts, 3, 93))
25+
>combined : Symbol(combined, Decl(genericFunctionInference2.ts, 5, 16))
26+
>foo : Symbol(foo, Decl(genericFunctionInference2.ts, 5, 28))
27+
28+
declare const foo: Reducer<MyState['combined']['foo']>;
29+
>foo : Symbol(foo, Decl(genericFunctionInference2.ts, 6, 13))
30+
>Reducer : Symbol(Reducer, Decl(genericFunctionInference2.ts, 0, 0))
31+
>MyState : Symbol(MyState, Decl(genericFunctionInference2.ts, 3, 93))
32+
33+
const myReducer1: Reducer<MyState> = combineReducers({
34+
>myReducer1 : Symbol(myReducer1, Decl(genericFunctionInference2.ts, 8, 5))
35+
>Reducer : Symbol(Reducer, Decl(genericFunctionInference2.ts, 0, 0))
36+
>MyState : Symbol(MyState, Decl(genericFunctionInference2.ts, 3, 93))
37+
>combineReducers : Symbol(combineReducers, Decl(genericFunctionInference2.ts, 2, 34))
38+
39+
combined: combineReducers({ foo }),
40+
>combined : Symbol(combined, Decl(genericFunctionInference2.ts, 8, 54))
41+
>combineReducers : Symbol(combineReducers, Decl(genericFunctionInference2.ts, 2, 34))
42+
>foo : Symbol(foo, Decl(genericFunctionInference2.ts, 9, 31))
43+
44+
});
45+
46+
const myReducer2 = combineReducers({
47+
>myReducer2 : Symbol(myReducer2, Decl(genericFunctionInference2.ts, 12, 5))
48+
>combineReducers : Symbol(combineReducers, Decl(genericFunctionInference2.ts, 2, 34))
49+
50+
combined: combineReducers({ foo }),
51+
>combined : Symbol(combined, Decl(genericFunctionInference2.ts, 12, 36))
52+
>combineReducers : Symbol(combineReducers, Decl(genericFunctionInference2.ts, 2, 34))
53+
>foo : Symbol(foo, Decl(genericFunctionInference2.ts, 13, 31))
54+
55+
});
56+
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
=== tests/cases/compiler/genericFunctionInference2.ts ===
2+
// Repro from #30685
3+
4+
type Reducer<S> = (state: S) => S;
5+
>Reducer : Reducer<S>
6+
>state : S
7+
8+
declare function combineReducers<S>(reducers: { [K in keyof S]: Reducer<S[K]> }): Reducer<S>;
9+
>combineReducers : <S>(reducers: { [K in keyof S]: Reducer<S[K]>; }) => Reducer<S>
10+
>reducers : { [K in keyof S]: Reducer<S[K]>; }
11+
12+
type MyState = { combined: { foo: number } };
13+
>MyState : MyState
14+
>combined : { foo: number; }
15+
>foo : number
16+
17+
declare const foo: Reducer<MyState['combined']['foo']>;
18+
>foo : Reducer<number>
19+
20+
const myReducer1: Reducer<MyState> = combineReducers({
21+
>myReducer1 : Reducer<MyState>
22+
>combineReducers({ combined: combineReducers({ foo }),}) : Reducer<{ combined: { foo: any; }; }>
23+
>combineReducers : <S>(reducers: { [K in keyof S]: Reducer<S[K]>; }) => Reducer<S>
24+
>{ combined: combineReducers({ foo }),} : { combined: Reducer<{ foo: number; }>; }
25+
26+
combined: combineReducers({ foo }),
27+
>combined : Reducer<{ foo: number; }>
28+
>combineReducers({ foo }) : Reducer<{ foo: number; }>
29+
>combineReducers : <S>(reducers: { [K in keyof S]: Reducer<S[K]>; }) => Reducer<S>
30+
>{ foo } : { foo: Reducer<number>; }
31+
>foo : Reducer<number>
32+
33+
});
34+
35+
const myReducer2 = combineReducers({
36+
>myReducer2 : Reducer<{ combined: { foo: any; }; }>
37+
>combineReducers({ combined: combineReducers({ foo }),}) : Reducer<{ combined: { foo: any; }; }>
38+
>combineReducers : <S>(reducers: { [K in keyof S]: Reducer<S[K]>; }) => Reducer<S>
39+
>{ combined: combineReducers({ foo }),} : { combined: Reducer<{ foo: number; }>; }
40+
41+
combined: combineReducers({ foo }),
42+
>combined : Reducer<{ foo: number; }>
43+
>combineReducers({ foo }) : Reducer<{ foo: number; }>
44+
>combineReducers : <S>(reducers: { [K in keyof S]: Reducer<S[K]>; }) => Reducer<S>
45+
>{ foo } : { foo: Reducer<number>; }
46+
>foo : Reducer<number>
47+
48+
});
49+

0 commit comments

Comments
 (0)