Skip to content

Commit 63ecde4

Browse files
authored
Add additional an test for instantiating contextual signature using default type param (#51002)
1 parent 58d90d4 commit 63ecde4

File tree

3 files changed

+151
-0
lines changed

3 files changed

+151
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
=== tests/cases/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.ts ===
2+
// repro #46310
3+
4+
export interface TypegenDisabled {
5+
>TypegenDisabled : Symbol(TypegenDisabled, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 0, 0))
6+
7+
"@@xstate/typegen": false;
8+
>"@@xstate/typegen" : Symbol(TypegenDisabled["@@xstate/typegen"], Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 2, 34))
9+
}
10+
export interface TypegenEnabled {
11+
>TypegenEnabled : Symbol(TypegenEnabled, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 4, 1))
12+
13+
"@@xstate/typegen": true;
14+
>"@@xstate/typegen" : Symbol(TypegenEnabled["@@xstate/typegen"], Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 5, 33))
15+
}
16+
17+
type ActionFunction<TEvent extends { type: string }> = (event: TEvent) => void;
18+
>ActionFunction : Symbol(ActionFunction, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 7, 1))
19+
>TEvent : Symbol(TEvent, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 9, 20))
20+
>type : Symbol(type, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 9, 36))
21+
>event : Symbol(event, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 9, 56))
22+
>TEvent : Symbol(TEvent, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 9, 20))
23+
24+
declare function createMachine<
25+
>createMachine : Symbol(createMachine, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 9, 79))
26+
27+
TTypesMeta extends TypegenEnabled | TypegenDisabled = TypegenDisabled
28+
>TTypesMeta : Symbol(TTypesMeta, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 11, 31))
29+
>TypegenEnabled : Symbol(TypegenEnabled, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 4, 1))
30+
>TypegenDisabled : Symbol(TypegenDisabled, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 0, 0))
31+
>TypegenDisabled : Symbol(TypegenDisabled, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 0, 0))
32+
33+
>(
34+
config: {
35+
>config : Symbol(config, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 13, 2))
36+
37+
types?: TTypesMeta;
38+
>types : Symbol(types, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 14, 11))
39+
>TTypesMeta : Symbol(TTypesMeta, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 11, 31))
40+
41+
},
42+
implementations: TTypesMeta extends TypegenEnabled
43+
>implementations : Symbol(implementations, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 16, 4))
44+
>TTypesMeta : Symbol(TTypesMeta, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 11, 31))
45+
>TypegenEnabled : Symbol(TypegenEnabled, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 4, 1))
46+
47+
? ActionFunction<{ type: "test" }>
48+
>ActionFunction : Symbol(ActionFunction, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 7, 1))
49+
>type : Symbol(type, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 18, 22))
50+
51+
: ActionFunction<{ type: string }>
52+
>ActionFunction : Symbol(ActionFunction, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 7, 1))
53+
>type : Symbol(type, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 19, 22))
54+
55+
): void;
56+
57+
createMachine({}, (ev) => {
58+
>createMachine : Symbol(createMachine, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 9, 79))
59+
>ev : Symbol(ev, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 22, 19))
60+
61+
ev.type; // should be `string`
62+
>ev.type : Symbol(type, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 19, 22))
63+
>ev : Symbol(ev, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 22, 19))
64+
>type : Symbol(type, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 19, 22))
65+
66+
});
67+
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
=== tests/cases/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.ts ===
2+
// repro #46310
3+
4+
export interface TypegenDisabled {
5+
"@@xstate/typegen": false;
6+
>"@@xstate/typegen" : false
7+
>false : false
8+
}
9+
export interface TypegenEnabled {
10+
"@@xstate/typegen": true;
11+
>"@@xstate/typegen" : true
12+
>true : true
13+
}
14+
15+
type ActionFunction<TEvent extends { type: string }> = (event: TEvent) => void;
16+
>ActionFunction : ActionFunction<TEvent>
17+
>type : string
18+
>event : TEvent
19+
20+
declare function createMachine<
21+
>createMachine : <TTypesMeta extends TypegenDisabled | TypegenEnabled = TypegenDisabled>(config: { types?: TTypesMeta;}, implementations: TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test";}> : ActionFunction<{ type: string;}>) => void
22+
23+
TTypesMeta extends TypegenEnabled | TypegenDisabled = TypegenDisabled
24+
>(
25+
config: {
26+
>config : { types?: TTypesMeta | undefined; }
27+
28+
types?: TTypesMeta;
29+
>types : TTypesMeta | undefined
30+
31+
},
32+
implementations: TTypesMeta extends TypegenEnabled
33+
>implementations : TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test"; }> : ActionFunction<{ type: string; }>
34+
35+
? ActionFunction<{ type: "test" }>
36+
>type : "test"
37+
38+
: ActionFunction<{ type: string }>
39+
>type : string
40+
41+
): void;
42+
43+
createMachine({}, (ev) => {
44+
>createMachine({}, (ev) => { ev.type; // should be `string`}) : void
45+
>createMachine : <TTypesMeta extends TypegenDisabled | TypegenEnabled = TypegenDisabled>(config: { types?: TTypesMeta | undefined; }, implementations: TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test"; }> : ActionFunction<{ type: string; }>) => void
46+
>{} : {}
47+
>(ev) => { ev.type; // should be `string`} : (ev: { type: string; }) => void
48+
>ev : { type: string; }
49+
50+
ev.type; // should be `string`
51+
>ev.type : string
52+
>ev : { type: string; }
53+
>type : string
54+
55+
});
56+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// @strict: true
2+
// @noEmit: true
3+
4+
// repro #46310
5+
6+
export interface TypegenDisabled {
7+
"@@xstate/typegen": false;
8+
}
9+
export interface TypegenEnabled {
10+
"@@xstate/typegen": true;
11+
}
12+
13+
type ActionFunction<TEvent extends { type: string }> = (event: TEvent) => void;
14+
15+
declare function createMachine<
16+
TTypesMeta extends TypegenEnabled | TypegenDisabled = TypegenDisabled
17+
>(
18+
config: {
19+
types?: TTypesMeta;
20+
},
21+
implementations: TTypesMeta extends TypegenEnabled
22+
? ActionFunction<{ type: "test" }>
23+
: ActionFunction<{ type: string }>
24+
): void;
25+
26+
createMachine({}, (ev) => {
27+
ev.type; // should be `string`
28+
});

0 commit comments

Comments
 (0)