diff --git a/tests/baselines/reference/contextualSignatureConditionalTypeInstantiationUsingDefault.symbols b/tests/baselines/reference/contextualSignatureConditionalTypeInstantiationUsingDefault.symbols new file mode 100644 index 0000000000000..81e0123470ef3 --- /dev/null +++ b/tests/baselines/reference/contextualSignatureConditionalTypeInstantiationUsingDefault.symbols @@ -0,0 +1,67 @@ +=== tests/cases/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.ts === +// repro #46310 + +export interface TypegenDisabled { +>TypegenDisabled : Symbol(TypegenDisabled, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 0, 0)) + + "@@xstate/typegen": false; +>"@@xstate/typegen" : Symbol(TypegenDisabled["@@xstate/typegen"], Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 2, 34)) +} +export interface TypegenEnabled { +>TypegenEnabled : Symbol(TypegenEnabled, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 4, 1)) + + "@@xstate/typegen": true; +>"@@xstate/typegen" : Symbol(TypegenEnabled["@@xstate/typegen"], Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 5, 33)) +} + +type ActionFunction = (event: TEvent) => void; +>ActionFunction : Symbol(ActionFunction, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 7, 1)) +>TEvent : Symbol(TEvent, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 9, 20)) +>type : Symbol(type, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 9, 36)) +>event : Symbol(event, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 9, 56)) +>TEvent : Symbol(TEvent, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 9, 20)) + +declare function createMachine< +>createMachine : Symbol(createMachine, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 9, 79)) + + TTypesMeta extends TypegenEnabled | TypegenDisabled = TypegenDisabled +>TTypesMeta : Symbol(TTypesMeta, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 11, 31)) +>TypegenEnabled : Symbol(TypegenEnabled, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 4, 1)) +>TypegenDisabled : Symbol(TypegenDisabled, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 0, 0)) +>TypegenDisabled : Symbol(TypegenDisabled, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 0, 0)) + +>( + config: { +>config : Symbol(config, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 13, 2)) + + types?: TTypesMeta; +>types : Symbol(types, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 14, 11)) +>TTypesMeta : Symbol(TTypesMeta, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 11, 31)) + + }, + implementations: TTypesMeta extends TypegenEnabled +>implementations : Symbol(implementations, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 16, 4)) +>TTypesMeta : Symbol(TTypesMeta, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 11, 31)) +>TypegenEnabled : Symbol(TypegenEnabled, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 4, 1)) + + ? ActionFunction<{ type: "test" }> +>ActionFunction : Symbol(ActionFunction, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 7, 1)) +>type : Symbol(type, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 18, 22)) + + : ActionFunction<{ type: string }> +>ActionFunction : Symbol(ActionFunction, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 7, 1)) +>type : Symbol(type, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 19, 22)) + +): void; + +createMachine({}, (ev) => { +>createMachine : Symbol(createMachine, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 9, 79)) +>ev : Symbol(ev, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 22, 19)) + + ev.type; // should be `string` +>ev.type : Symbol(type, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 19, 22)) +>ev : Symbol(ev, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 22, 19)) +>type : Symbol(type, Decl(contextualSignatureConditionalTypeInstantiationUsingDefault.ts, 19, 22)) + +}); + diff --git a/tests/baselines/reference/contextualSignatureConditionalTypeInstantiationUsingDefault.types b/tests/baselines/reference/contextualSignatureConditionalTypeInstantiationUsingDefault.types new file mode 100644 index 0000000000000..b98593ef5bd56 --- /dev/null +++ b/tests/baselines/reference/contextualSignatureConditionalTypeInstantiationUsingDefault.types @@ -0,0 +1,56 @@ +=== tests/cases/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.ts === +// repro #46310 + +export interface TypegenDisabled { + "@@xstate/typegen": false; +>"@@xstate/typegen" : false +>false : false +} +export interface TypegenEnabled { + "@@xstate/typegen": true; +>"@@xstate/typegen" : true +>true : true +} + +type ActionFunction = (event: TEvent) => void; +>ActionFunction : ActionFunction +>type : string +>event : TEvent + +declare function createMachine< +>createMachine : (config: { types?: TTypesMeta;}, implementations: TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test";}> : ActionFunction<{ type: string;}>) => void + + TTypesMeta extends TypegenEnabled | TypegenDisabled = TypegenDisabled +>( + config: { +>config : { types?: TTypesMeta | undefined; } + + types?: TTypesMeta; +>types : TTypesMeta | undefined + + }, + implementations: TTypesMeta extends TypegenEnabled +>implementations : TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test"; }> : ActionFunction<{ type: string; }> + + ? ActionFunction<{ type: "test" }> +>type : "test" + + : ActionFunction<{ type: string }> +>type : string + +): void; + +createMachine({}, (ev) => { +>createMachine({}, (ev) => { ev.type; // should be `string`}) : void +>createMachine : (config: { types?: TTypesMeta | undefined; }, implementations: TTypesMeta extends TypegenEnabled ? ActionFunction<{ type: "test"; }> : ActionFunction<{ type: string; }>) => void +>{} : {} +>(ev) => { ev.type; // should be `string`} : (ev: { type: string; }) => void +>ev : { type: string; } + + ev.type; // should be `string` +>ev.type : string +>ev : { type: string; } +>type : string + +}); + diff --git a/tests/cases/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.ts b/tests/cases/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.ts new file mode 100644 index 0000000000000..01949742f7a83 --- /dev/null +++ b/tests/cases/compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.ts @@ -0,0 +1,28 @@ +// @strict: true +// @noEmit: true + +// repro #46310 + +export interface TypegenDisabled { + "@@xstate/typegen": false; +} +export interface TypegenEnabled { + "@@xstate/typegen": true; +} + +type ActionFunction = (event: TEvent) => void; + +declare function createMachine< + TTypesMeta extends TypegenEnabled | TypegenDisabled = TypegenDisabled +>( + config: { + types?: TTypesMeta; + }, + implementations: TTypesMeta extends TypegenEnabled + ? ActionFunction<{ type: "test" }> + : ActionFunction<{ type: string }> +): void; + +createMachine({}, (ev) => { + ev.type; // should be `string` +});