diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go
index ab8e12a313..170ba9cca8 100644
--- a/internal/checker/nodebuilderimpl.go
+++ b/internal/checker/nodebuilderimpl.go
@@ -1440,7 +1440,7 @@ func (b *nodeBuilderImpl) createMappedTypeNodeFromType(t *Type) *ast.TypeNode {
originalConstraint := b.ch.instantiateType(rawConstraintTypeFromDeclaration, mapped.mapper)
var originalConstraintNode *ast.Node
- if originalConstraint.flags&TypeFlagsUnknown != 0 {
+ if originalConstraint.flags&TypeFlagsUnknown == 0 {
originalConstraintNode = b.typeToTypeNode(originalConstraint)
}
diff --git a/testdata/baselines/reference/submodule/compiler/computedTypesKeyofNoIndexSignatureType.types b/testdata/baselines/reference/submodule/compiler/computedTypesKeyofNoIndexSignatureType.types
index daae4f44f8..ffebd3d4a6 100644
--- a/testdata/baselines/reference/submodule/compiler/computedTypesKeyofNoIndexSignatureType.types
+++ b/testdata/baselines/reference/submodule/compiler/computedTypesKeyofNoIndexSignatureType.types
@@ -2,7 +2,7 @@
=== computedTypesKeyofNoIndexSignatureType.ts ===
type Compute = { [K in keyof A]: Compute; } & {};
->Compute : { [K in keyof A]: A[K_1] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends infer T extends unknown ? { [K in keyof T]: any; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; }
+>Compute : { [K in keyof A]: A[K_1] extends infer T ? { [K in keyof T]: A[K_1][K_2] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends infer T ? { [K in keyof T]: any; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; }
type EqualsTest = () => A extends T ? 1 : 0;
>EqualsTest : EqualsTest
diff --git a/testdata/baselines/reference/submodule/compiler/computedTypesKeyofNoIndexSignatureType.types.diff b/testdata/baselines/reference/submodule/compiler/computedTypesKeyofNoIndexSignatureType.types.diff
index 2b68cafef0..86e61577c9 100644
--- a/testdata/baselines/reference/submodule/compiler/computedTypesKeyofNoIndexSignatureType.types.diff
+++ b/testdata/baselines/reference/submodule/compiler/computedTypesKeyofNoIndexSignatureType.types.diff
@@ -5,7 +5,7 @@
=== computedTypesKeyofNoIndexSignatureType.ts ===
type Compute = { [K in keyof A]: Compute; } & {};
->Compute : { [K in keyof A]: A[K] extends infer T ? { [K_1 in keyof T]: T[K_1] extends infer T_1 ? { [K_2 in keyof T_1]: T_1[K_2] extends infer T_2 ? { [K_3 in keyof T_2]: T_2[K_3] extends infer T_3 ? { [K_4 in keyof T_3]: T_3[K_4] extends infer T_4 ? { [K_5 in keyof T_4]: T_4[K_5] extends infer T_5 ? { [K_6 in keyof T_5]: T_5[K_6] extends infer T_6 ? { [K_7 in keyof T_6]: T_6[K_7] extends infer T_7 ? { [K_8 in keyof T_7]: T_7[K_8] extends infer T_8 ? { [K_9 in keyof T_8]: T_8[K_9] extends infer T_9 ? { [K_10 in keyof T_9]: any; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; }
-+>Compute : { [K in keyof A]: A[K_1] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends infer T extends unknown ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends infer T extends unknown ? { [K in keyof T]: any; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; }
++>Compute : { [K in keyof A]: A[K_1] extends infer T ? { [K in keyof T]: A[K_1][K_2] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9] extends infer T ? { [K in keyof T]: A[K_1][K_2][K_3][K_4][K_5][K_6][K_7][K_8][K_9][K_10] extends infer T ? { [K in keyof T]: any; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; } : never; }
type EqualsTest = () => A extends T ? 1 : 0;
>EqualsTest : EqualsTest
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.js b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.js
index 736c247093..251410e062 100644
--- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.js
+++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.js
@@ -50,50 +50,12 @@ export default _default;
declare const _default: {
test: {
fn: (sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters; } : never;
+ x: T["x"] extends infer T_1 extends {
+ [x: string]: (...params: unknown[]) => unknown;
+ } ? { [K in keyof T_1]: T["x"][K]; } : never;
+ }>(sliceIndex: T) => T["x"] extends infer T_1 extends {
+ [x: string]: (...params: unknown[]) => unknown;
+ } ? { [K in keyof T_1]: Parameters; } : never;
};
};
export default _default;
-
-
-//// [DtsFileErrors]
-
-
-reexport.d.ts(5,88): error TS2344: Type 'T["x"][K]' does not satisfy the constraint '(...args: any) => any'.
- Type 'T["x"][keyof T_1]' is not assignable to type '(...args: any) => any'.
- Type 'T["x"][string] | T["x"][number] | T["x"][symbol]' is not assignable to type '(...args: any) => any'.
- Type 'T["x"][string]' is not assignable to type '(...args: any) => any'.
-
-
-==== types.d.ts (0 errors) ====
- type Fns = Record unknown>;
- type Map = {
- [K in keyof T]: T[K];
- };
- type AllArg = {
- [K in keyof T]: Parameters;
- };
- declare function fn;
- }>(sliceIndex: T): AllArg;
- declare const _default: {
- fn: typeof fn;
- };
- export default _default;
-
-==== reexport.d.ts (1 errors) ====
- declare const _default: {
- test: {
- fn: (sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters; } : never;
- ~~~~~~~~~
-!!! error TS2344: Type 'T["x"][K]' does not satisfy the constraint '(...args: any) => any'.
-!!! error TS2344: Type 'T["x"][keyof T_1]' is not assignable to type '(...args: any) => any'.
-!!! error TS2344: Type 'T["x"][string] | T["x"][number] | T["x"][symbol]' is not assignable to type '(...args: any) => any'.
-!!! error TS2344: Type 'T["x"][string]' is not assignable to type '(...args: any) => any'.
- };
- };
- export default _default;
-
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.js.diff
index 70deef9e58..180b1f2c78 100644
--- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.js.diff
+++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.js.diff
@@ -9,60 +9,17 @@
exports.default = { test: types_1.default };
-@@= skipped -23, +23 lines =@@
- declare const _default: {
- test: {
+@@= skipped -25, +25 lines =@@
fn: unknown;
+ x: T["x"] extends infer T_1 extends {
+ [x: string]: (...params: unknown[]) => unknown;
- } ? { [K in keyof T_1]: T_1[K]; } : never;
- }>(sliceIndex: T) => T["x"] extends infer T_2 extends {
-- [x: string]: (...params: unknown[]) => unknown;
++ } ? { [K in keyof T_1]: T["x"][K]; } : never;
++ }>(sliceIndex: T) => T["x"] extends infer T_1 extends {
+ [x: string]: (...params: unknown[]) => unknown;
- } ? { [K_1 in keyof T_2]: Parameters; } : never;
-+ x: T["x"] extends infer T_1 ? { [K in keyof T_1]: T["x"][K]; } : never;
-+ }>(sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters; } : never;
++ } ? { [K in keyof T_1]: Parameters; } : never;
};
};
- export default _default;
-+
-+
-+//// [DtsFileErrors]
-+
-+
-+reexport.d.ts(5,88): error TS2344: Type 'T["x"][K]' does not satisfy the constraint '(...args: any) => any'.
-+ Type 'T["x"][keyof T_1]' is not assignable to type '(...args: any) => any'.
-+ Type 'T["x"][string] | T["x"][number] | T["x"][symbol]' is not assignable to type '(...args: any) => any'.
-+ Type 'T["x"][string]' is not assignable to type '(...args: any) => any'.
-+
-+
-+==== types.d.ts (0 errors) ====
-+ type Fns = Record unknown>;
-+ type Map = {
-+ [K in keyof T]: T[K];
-+ };
-+ type AllArg = {
-+ [K in keyof T]: Parameters;
-+ };
-+ declare function fn;
-+ }>(sliceIndex: T): AllArg;
-+ declare const _default: {
-+ fn: typeof fn;
-+ };
-+ export default _default;
-+
-+==== reexport.d.ts (1 errors) ====
-+ declare const _default: {
-+ test: {
-+ fn: (sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters; } : never;
-+ ~~~~~~~~~
-+!!! error TS2344: Type 'T["x"][K]' does not satisfy the constraint '(...args: any) => any'.
-+!!! error TS2344: Type 'T["x"][keyof T_1]' is not assignable to type '(...args: any) => any'.
-+!!! error TS2344: Type 'T["x"][string] | T["x"][number] | T["x"][symbol]' is not assignable to type '(...args: any) => any'.
-+!!! error TS2344: Type 'T["x"][string]' is not assignable to type '(...args: any) => any'.
-+ };
-+ };
-+ export default _default;
-+
\ No newline at end of file
+ export default _default;
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types
index 96e4a14d96..b9a7cdfcae 100644
--- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types
+++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types
@@ -26,9 +26,9 @@ export default { fn };
=== reexport.ts ===
import test from "./types";
->test : { fn: (sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters; } : never; }
+>test : { fn: unknown; } ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: Parameters; } : never; }
export default { test };
->{ test } : { test: { fn: (sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters; } : never; }; }
->test : { fn: (sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters; } : never; }
+>{ test } : { test: { fn: unknown; } ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: Parameters; } : never; }; }
+>test : { fn: unknown; } ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: Parameters; } : never; }
diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types.diff
index edf2249aa7..1b71974e57 100644
--- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types.diff
+++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypeDistributivityPreservesConstraints.types.diff
@@ -5,10 +5,10 @@
=== reexport.ts ===
import test from "./types";
->test : { fn: unknown; } ? { [K in keyof T_1]: T_1[K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_2 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K_1 in keyof T_2]: Parameters; } : never; }
-+>test : { fn: (sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters; } : never; }
++>test : { fn: unknown; } ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: Parameters; } : never; }
export default { test };
->{ test } : { test: { fn: unknown; } ? { [K in keyof T_1]: T_1[K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_2 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K_1 in keyof T_2]: Parameters; } : never; }; }
->test : { fn: unknown; } ? { [K in keyof T_1]: T_1[K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_2 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K_1 in keyof T_2]: Parameters; } : never; }
-+>{ test } : { test: { fn: (sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters; } : never; }; }
-+>test : { fn: (sliceIndex: T) => T["x"] extends infer T_1 ? { [K in keyof T_1]: Parameters; } : never; }
++>{ test } : { test: { fn: unknown; } ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: Parameters; } : never; }; }
++>test : { fn: unknown; } ? { [K in keyof T_1]: T["x"][K]; } : never; }>(sliceIndex: T) => T["x"] extends infer T_1 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K in keyof T_1]: Parameters; } : never; }
diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js
index 8ec1b82955..4450bcb490 100644
--- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js
+++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js
@@ -94,7 +94,7 @@ export declare type ZodRawShape = {
};
export declare const buildSchema: (version: V) => addQuestionMarks;
-}>, undefined extends V ? never : "version"> extends infer T extends unknown ? { [k in keyof T]: addQuestionMarks, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: addQuestionMarks;
}>, undefined extends V ? never : "version">[k]; } : never;
type evaluate = {
@@ -104,15 +104,15 @@ export type entryOf = evaluate<{
[k in keyof o]-?: [k, o[k] & ({} | null)];
}[o extends readonly unknown[] ? keyof o & number : keyof o]>;
export type entriesOf = evaluate[]>;
-export declare const entriesOf: (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[];
+export declare const entriesOf: (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[];
export {};
//// [DtsFileErrors]
-declarationEmitMappedTypePreservesTypeParameterConstraint.d.ts(24,98): error TS2536: Type 'k' cannot be used to index type 'addQuestionMarks; }>, undefined extends V ? never : "version">'.
-declarationEmitMappedTypePreservesTypeParameterConstraint.d.ts(34,226): error TS2536: Type 'k' cannot be used to index type '{ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o]'.
+declarationEmitMappedTypePreservesTypeParameterConstraint.d.ts(24,82): error TS2536: Type 'k' cannot be used to index type 'addQuestionMarks; }>, undefined extends V ? never : "version">'.
+declarationEmitMappedTypePreservesTypeParameterConstraint.d.ts(34,210): error TS2536: Type 'k' cannot be used to index type '{ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o]'.
==== declarationEmitMappedTypePreservesTypeParameterConstraint.d.ts (2 errors) ====
@@ -139,8 +139,8 @@ declarationEmitMappedTypePreservesTypeParameterConstraint.d.ts(34,226): error TS
};
export declare const buildSchema: (version: V) => addQuestionMarks;
- }>, undefined extends V ? never : "version"> extends infer T extends unknown ? { [k in keyof T]: addQuestionMarks, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: addQuestionMarks;
~~~~~~~~~~~~~~~~~~~~~~~~~~~
}>, undefined extends V ? never : "version">[k]; } : never;
@@ -153,8 +153,8 @@ declarationEmitMappedTypePreservesTypeParameterConstraint.d.ts(34,226): error TS
[k in keyof o]-?: [k, o[k] & ({} | null)];
}[o extends readonly unknown[] ? keyof o & number : keyof o]>;
export type entriesOf = evaluate[]>;
- export declare const entriesOf: (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[];
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ export declare const entriesOf: (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[];
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2536: Type 'k' cannot be used to index type '{ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o]'.
export {};
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js.diff
index 4cdbbcd494..3651005a53 100644
--- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js.diff
+++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.js.diff
@@ -21,7 +21,7 @@
-}>;
+export declare const buildSchema: (version: V) => addQuestionMarks;
-+}>, undefined extends V ? never : "version"> extends infer T extends unknown ? { [k in keyof T]: addQuestionMarks, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: addQuestionMarks;
+}>, undefined extends V ? never : "version">[k]; } : never;
type evaluate = {
@@ -32,15 +32,15 @@
}[o extends readonly unknown[] ? keyof o & number : keyof o]>;
export type entriesOf = evaluate[]>;
-export declare const entriesOf: (o: o) => entriesOf;
-+export declare const entriesOf: (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[];
++export declare const entriesOf: (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[];
export {};
+
+
+//// [DtsFileErrors]
+
+
-+declarationEmitMappedTypePreservesTypeParameterConstraint.d.ts(24,98): error TS2536: Type 'k' cannot be used to index type 'addQuestionMarks; }>, undefined extends V ? never : "version">'.
-+declarationEmitMappedTypePreservesTypeParameterConstraint.d.ts(34,226): error TS2536: Type 'k' cannot be used to index type '{ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o]'.
++declarationEmitMappedTypePreservesTypeParameterConstraint.d.ts(24,82): error TS2536: Type 'k' cannot be used to index type 'addQuestionMarks; }>, undefined extends V ? never : "version">'.
++declarationEmitMappedTypePreservesTypeParameterConstraint.d.ts(34,210): error TS2536: Type 'k' cannot be used to index type '{ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o]'.
+
+
+==== declarationEmitMappedTypePreservesTypeParameterConstraint.d.ts (2 errors) ====
@@ -67,8 +67,8 @@
+ };
+ export declare const buildSchema: (version: V) => addQuestionMarks;
-+ }>, undefined extends V ? never : "version"> extends infer T extends unknown ? { [k in keyof T]: addQuestionMarks, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: addQuestionMarks;
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ }>, undefined extends V ? never : "version">[k]; } : never;
@@ -81,8 +81,8 @@
+ [k in keyof o]-?: [k, o[k] & ({} | null)];
+ }[o extends readonly unknown[] ? keyof o & number : keyof o]>;
+ export type entriesOf = evaluate[]>;
-+ export declare const entriesOf: (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[];
-+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++ export declare const entriesOf: (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[];
++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+!!! error TS2536: Type 'k' cannot be used to index type '{ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o]'.
+ export {};
+
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types
index e9a054ef2c..d70877287d 100644
--- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types
+++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types
@@ -46,7 +46,7 @@ export declare type baseObjectOutputType = {
};
export declare type objectOutputType = flatten<
->objectOutputType : addQuestionMarks, requiredKeys>> extends infer T extends unknown ? { [k in keyof T]: addQuestionMarks, requiredKeys>>[k]; } : never
+>objectOutputType : addQuestionMarks, requiredKeys>> extends infer T ? { [k in keyof T]: addQuestionMarks, requiredKeys>>[k]; } : never
addQuestionMarks>
>;
@@ -60,8 +60,8 @@ export declare type ZodRawShape = {
};
export const buildSchema = (
->buildSchema : (version: V) => addQuestionMarks; }>, undefined extends V ? never : "version"> extends infer T extends unknown ? { [k in keyof T]: addQuestionMarks; }>, undefined extends V ? never : "version">[k]; } : never
->( version: V): objectOutputType<{ version: ZodLiteral;}> => ({} as any) : (version: V) => addQuestionMarks; }>, undefined extends V ? never : "version"> extends infer T extends unknown ? { [k in keyof T]: addQuestionMarks; }>, undefined extends V ? never : "version">[k]; } : never
+>buildSchema : (version: V) => addQuestionMarks; }>, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: addQuestionMarks; }>, undefined extends V ? never : "version">[k]; } : never
+>( version: V): objectOutputType<{ version: ZodLiteral;}> => ({} as any) : (version: V) => addQuestionMarks; }>, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: addQuestionMarks; }>, undefined extends V ? never : "version">[k]; } : never
version: V
>version : V
@@ -81,7 +81,7 @@ type evaluate = { [k in keyof t]: t[k] } & unknown
>evaluate : { [k in keyof t]: t[k]; }
export type entryOf = evaluate<
->entryOf : { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never
+>entryOf : { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never
{ [k in keyof o]-?: [k, o[k] & ({} | null)] }[o extends readonly unknown[]
? keyof o & number
@@ -89,15 +89,15 @@ export type entryOf = evaluate<
>
export type entriesOf = evaluate[]>
->entriesOf : ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
+>entriesOf : ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
export const entriesOf = (o: o) =>
->entriesOf : (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
->(o: o) => Object.entries(o) as entriesOf : (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
+>entriesOf : (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
+>(o: o) => Object.entries(o) as entriesOf : (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
>o : o
Object.entries(o) as entriesOf
->Object.entries(o) as entriesOf : ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
+>Object.entries(o) as entriesOf : ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
>Object.entries(o) : [string, any][]
>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; }
>Object : ObjectConstructor
diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types.diff
index 7e05817ad6..f5c8104ad2 100644
--- a/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types.diff
+++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMappedTypePreservesTypeParameterConstraint.types.diff
@@ -5,7 +5,7 @@
export declare type objectOutputType = flatten<
->objectOutputType : addQuestionMarks, requiredKeys>> extends infer T ? { [k in keyof T]: T[k]; } : never
-+>objectOutputType : addQuestionMarks, requiredKeys>> extends infer T extends unknown ? { [k in keyof T]: addQuestionMarks, requiredKeys>>[k]; } : never
++>objectOutputType : addQuestionMarks, requiredKeys>> extends infer T ? { [k in keyof T]: addQuestionMarks, requiredKeys>>[k]; } : never
addQuestionMarks>
>;
@@ -15,8 +15,8 @@
export const buildSchema = (
->buildSchema : (version: V) => objectOutputType<{ version: ZodLiteral; }>
->( version: V): objectOutputType<{ version: ZodLiteral;}> => ({} as any) : (version: V) => objectOutputType<{ version: ZodLiteral; }>
-+>buildSchema : (version: V) => addQuestionMarks; }>, undefined extends V ? never : "version"> extends infer T extends unknown ? { [k in keyof T]: addQuestionMarks; }>, undefined extends V ? never : "version">[k]; } : never
-+>( version: V): objectOutputType<{ version: ZodLiteral;}> => ({} as any) : (version: V) => addQuestionMarks; }>, undefined extends V ? never : "version"> extends infer T extends unknown ? { [k in keyof T]: addQuestionMarks; }>, undefined extends V ? never : "version">[k]; } : never
++>buildSchema : (version: V) => addQuestionMarks; }>, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: addQuestionMarks; }>, undefined extends V ? never : "version">[k]; } : never
++>( version: V): objectOutputType<{ version: ZodLiteral;}> => ({} as any) : (version: V) => addQuestionMarks; }>, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: addQuestionMarks; }>, undefined extends V ? never : "version">[k]; } : never
version: V
>version : V
@@ -25,7 +25,7 @@
export type entryOf = evaluate<
->entryOf : { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never
-+>entryOf : { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never
++>entryOf : { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never
{ [k in keyof o]-?: [k, o[k] & ({} | null)] }[o extends readonly unknown[]
? keyof o & number
@@ -34,18 +34,18 @@
export type entriesOf = evaluate[]>
->entriesOf : ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[]
-+>entriesOf : ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
++>entriesOf : ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
export const entriesOf = (o: o) =>
->entriesOf : (o: o) => entriesOf
->(o: o) => Object.entries(o) as entriesOf : (o: o) => entriesOf
-+>entriesOf : (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
-+>(o: o) => Object.entries(o) as entriesOf : (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
++>entriesOf : (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
++>(o: o) => Object.entries(o) as entriesOf : (o: o) => ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
>o : o
Object.entries(o) as entriesOf
->Object.entries(o) as entriesOf : ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: T[k]; } : never)[]
-+>Object.entries(o) as entriesOf : ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T extends unknown ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
++>Object.entries(o) as entriesOf : ({ [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [k in keyof T]: { [k_1 in keyof o]-?: [k_1, o[k_1] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o][k]; } : never)[]
>Object.entries(o) : [string, any][]
->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; }
+>Object.entries : { (o: ArrayLike | { [s: string]: T; }): [string, T][]; (o: {}): [string, any][]; }
diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.js b/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.js
index d7fb45fc72..b4091a3718 100644
--- a/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.js
+++ b/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.js
@@ -29,4 +29,4 @@ type PrivateMapped = {
};
export {};
//// [api.d.ts]
-export declare const mappedUnionWithPrivateType: (...args: T) => T[any] extends infer T_1 extends unknown ? { [K in keyof T_1]: T[any][K]; } : never;
+export declare const mappedUnionWithPrivateType: (...args: T) => T[any] extends infer T_1 ? { [K in keyof T_1]: T[any][K]; } : never;
diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.js.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.js.diff
index 5b9b7e6c6f..e3d621bc44 100644
--- a/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.js.diff
+++ b/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.js.diff
@@ -14,4 +14,4 @@
export {};
//// [api.d.ts]
-export declare const mappedUnionWithPrivateType: (...args: T) => T[any] extends infer T_1 ? { [K in keyof T_1]: T_1[K]; } : never;
-+export declare const mappedUnionWithPrivateType: (...args: T) => T[any] extends infer T_1 extends unknown ? { [K in keyof T_1]: T[any][K]; } : never;
\ No newline at end of file
++export declare const mappedUnionWithPrivateType: (...args: T) => T[any] extends infer T_1 ? { [K in keyof T_1]: T[any][K]; } : never;
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.types b/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.types
index 51a3a89371..2ea3dde29a 100644
--- a/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.types
+++ b/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.types
@@ -10,14 +10,14 @@ type PrivateMapped = {[K in keyof Obj]: Obj[K]};
=== api.ts ===
import {usePrivateType} from './internal';
->usePrivateType : (...args: T) => T[any] extends infer T_1 extends unknown ? { [K in keyof T_1]: T[any][K]; } : never
+>usePrivateType : (...args: T) => T[any] extends infer T_1 ? { [K in keyof T_1]: T[any][K]; } : never
export const mappedUnionWithPrivateType = (...args: T) => usePrivateType(...args);
->mappedUnionWithPrivateType : (...args: T) => T[any] extends infer T_1 extends unknown ? { [K in keyof T_1]: T[any][K]; } : never
->(...args: T) => usePrivateType(...args) : (...args: T) => T[any] extends infer T_1 extends unknown ? { [K in keyof T_1]: T[any][K]; } : never
+>mappedUnionWithPrivateType : (...args: T) => T[any] extends infer T_1 ? { [K in keyof T_1]: T[any][K]; } : never
+>(...args: T) => usePrivateType(...args) : (...args: T) => T[any] extends infer T_1 ? { [K in keyof T_1]: T[any][K]; } : never
>args : T
->usePrivateType(...args) : T_1[any] extends infer T extends unknown ? { [K in keyof T]: T_1[any][K]; } : never
->usePrivateType : (...args: T_1) => T_3[any] extends infer T_2 extends unknown ? { [K in keyof T_2]: T_3[any][K]; } : never
+>usePrivateType(...args) : T_1[any] extends infer T ? { [K in keyof T]: T_1[any][K]; } : never
+>usePrivateType : (...args: T_1) => T_3[any] extends infer T_2 ? { [K in keyof T_2]: T_3[any][K]; } : never
>...args : unknown
>args : T
diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.types.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.types.diff
index 0ad381275c..0ebc8aeaaa 100644
--- a/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.types.diff
+++ b/testdata/baselines/reference/submodule/compiler/mappedTypeGenericInstantiationPreservesHomomorphism.types.diff
@@ -5,17 +5,17 @@
=== api.ts ===
import {usePrivateType} from './internal';
->usePrivateType : (...args: T) => T[any] extends infer T_1 ? { [K in keyof T_1]: T_1[K]; } : never
-+>usePrivateType : (...args: T) => T[any] extends infer T_1 extends unknown ? { [K in keyof T_1]: T[any][K]; } : never
++>usePrivateType : (...args: T) => T[any] extends infer T_1 ? { [K in keyof T_1]: T[any][K]; } : never
export const mappedUnionWithPrivateType = (...args: T) => usePrivateType(...args);
->mappedUnionWithPrivateType : (...args: T) => T[any] extends infer T_1 ? { [K in keyof T_1]: T_1[K]; } : never
->(...args: T) => usePrivateType(...args) : (...args: T) => T[any] extends infer T_1 ? { [K in keyof T_1]: T_1[K]; } : never
-+>mappedUnionWithPrivateType : (...args: T) => T[any] extends infer T_1 extends unknown ? { [K in keyof T_1]: T[any][K]; } : never
-+>(...args: T) => usePrivateType(...args) : (...args: T) => T[any] extends infer T_1 extends unknown ? { [K in keyof T_1]: T[any][K]; } : never
++>mappedUnionWithPrivateType : (...args: T) => T[any] extends infer T_1 ? { [K in keyof T_1]: T[any][K]; } : never
++>(...args: T) => usePrivateType(...args) : (...args: T) => T[any] extends infer T_1 ? { [K in keyof T_1]: T[any][K]; } : never
>args : T
->usePrivateType(...args) : T[any] extends infer T_1 ? { [K in keyof T_1]: T_1[K]; } : never
->usePrivateType : (...args: T_1) => T_1[any] extends infer T_2 ? { [K in keyof T_2]: T_2[K]; } : never
-+>usePrivateType(...args) : T_1[any] extends infer T extends unknown ? { [K in keyof T]: T_1[any][K]; } : never
-+>usePrivateType : (...args: T_1) => T_3[any] extends infer T_2 extends unknown ? { [K in keyof T_2]: T_3[any][K]; } : never
++>usePrivateType(...args) : T_1[any] extends infer T ? { [K in keyof T]: T_1[any][K]; } : never
++>usePrivateType : (...args: T_1) => T_3[any] extends infer T_2 ? { [K in keyof T_2]: T_3[any][K]; } : never
>...args : unknown
>args : T
diff --git a/testdata/baselines/reference/submodule/compiler/noCircularitySelfReferentialGetter1.types b/testdata/baselines/reference/submodule/compiler/noCircularitySelfReferentialGetter1.types
index 67e047e445..4e1fd17f5a 100644
--- a/testdata/baselines/reference/submodule/compiler/noCircularitySelfReferentialGetter1.types
+++ b/testdata/baselines/reference/submodule/compiler/noCircularitySelfReferentialGetter1.types
@@ -26,7 +26,7 @@ type Prettify = { [K in keyof T]: T[K] } & {};
>Prettify : { [K in keyof T]: T[K]; }
type InferObjectType = Prettify<
->InferObjectType : { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? never : k]: Shape[k]["output"]; } extends infer T extends unknown ? { [K in keyof T]: ({ [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? never : k]: Shape[k]["output"]; })[K]; } : never
+>InferObjectType : { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? never : k]: Shape[k]["output"]; } extends infer T ? { [K in keyof T]: ({ [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? never : k]: Shape[k]["output"]; })[K]; } : never
{
[k in keyof Shape as Shape[k] extends { optional: "true" }
>optional : "true"
@@ -46,7 +46,7 @@ interface ZodObject extends ZodType {
>optional : "false"
output: InferObjectType;
->output : { [k in keyof T as T[k] extends { optional: "true"; } ? k : never]?: T[k]["output"] | undefined; } & { [k in keyof T as T[k] extends { optional: "true"; } ? never : k]: T[k]["output"]; } extends infer T_1 extends unknown ? { [K in keyof T_1]: ({ [k in keyof T as T[k] extends { optional: "true"; } ? k : never]?: T[k]["output"] | undefined; } & { [k in keyof T as T[k] extends { optional: "true"; } ? never : k]: T[k]["output"]; })[K]; } : never
+>output : { [k in keyof T as T[k] extends { optional: "true"; } ? k : never]?: T[k]["output"] | undefined; } & { [k in keyof T as T[k] extends { optional: "true"; } ? never : k]: T[k]["output"]; } extends infer T_1 ? { [K in keyof T_1]: ({ [k in keyof T as T[k] extends { optional: "true"; } ? k : never]?: T[k]["output"] | undefined; } & { [k in keyof T as T[k] extends { optional: "true"; } ? never : k]: T[k]["output"]; })[K]; } : never
}
interface ZodOptional extends ZodType {
diff --git a/testdata/baselines/reference/submodule/compiler/noCircularitySelfReferentialGetter1.types.diff b/testdata/baselines/reference/submodule/compiler/noCircularitySelfReferentialGetter1.types.diff
index a16f8426b8..56684719d2 100644
--- a/testdata/baselines/reference/submodule/compiler/noCircularitySelfReferentialGetter1.types.diff
+++ b/testdata/baselines/reference/submodule/compiler/noCircularitySelfReferentialGetter1.types.diff
@@ -5,7 +5,7 @@
type InferObjectType = Prettify<
->InferObjectType : { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k_1 in keyof Shape as Shape[k_1] extends { optional: "true"; } ? never : k_1]: Shape[k_1]["output"]; } extends infer T ? { [K in keyof T]: T[K]; } : never
-+>InferObjectType : { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? never : k]: Shape[k]["output"]; } extends infer T extends unknown ? { [K in keyof T]: ({ [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? never : k]: Shape[k]["output"]; })[K]; } : never
++>InferObjectType : { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? never : k]: Shape[k]["output"]; } extends infer T ? { [K in keyof T]: ({ [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? never : k]: Shape[k]["output"]; })[K]; } : never
{
[k in keyof Shape as Shape[k] extends { optional: "true" }
>optional : "true"
@@ -14,7 +14,7 @@
output: InferObjectType;
->output : { [k in keyof T as T[k] extends { optional: "true"; } ? k : never]?: T[k]["output"] | undefined; } & { [k_1 in keyof T as T[k_1] extends { optional: "true"; } ? never : k_1]: T[k_1]["output"]; } extends infer T_1 ? { [K in keyof T_1]: T_1[K]; } : never
-+>output : { [k in keyof T as T[k] extends { optional: "true"; } ? k : never]?: T[k]["output"] | undefined; } & { [k in keyof T as T[k] extends { optional: "true"; } ? never : k]: T[k]["output"]; } extends infer T_1 extends unknown ? { [K in keyof T_1]: ({ [k in keyof T as T[k] extends { optional: "true"; } ? k : never]?: T[k]["output"] | undefined; } & { [k in keyof T as T[k] extends { optional: "true"; } ? never : k]: T[k]["output"]; })[K]; } : never
++>output : { [k in keyof T as T[k] extends { optional: "true"; } ? k : never]?: T[k]["output"] | undefined; } & { [k in keyof T as T[k] extends { optional: "true"; } ? never : k]: T[k]["output"]; } extends infer T_1 ? { [K in keyof T_1]: ({ [k in keyof T as T[k] extends { optional: "true"; } ? k : never]?: T[k]["output"] | undefined; } & { [k in keyof T as T[k] extends { optional: "true"; } ? never : k]: T[k]["output"]; })[K]; } : never
}
interface ZodOptional extends ZodType {
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/compiler/noCircularitySelfReferentialGetter2.types b/testdata/baselines/reference/submodule/compiler/noCircularitySelfReferentialGetter2.types
index 2349927427..80022ff103 100644
--- a/testdata/baselines/reference/submodule/compiler/noCircularitySelfReferentialGetter2.types
+++ b/testdata/baselines/reference/submodule/compiler/noCircularitySelfReferentialGetter2.types
@@ -24,7 +24,7 @@ type Prettify = { [K in keyof T]: T[K] } & {};
>Prettify : { [K in keyof T]: T[K]; }
type InferObjectType = Prettify<
->InferObjectType : { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? never : k]: Shape[k]["output"]; } extends infer T extends unknown ? { [K in keyof T]: ({ [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? never : k]: Shape[k]["output"]; })[K]; } : never
+>InferObjectType : { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? never : k]: Shape[k]["output"]; } extends infer T ? { [K in keyof T]: ({ [k in keyof Shape as Shape[k] extends { optional: "true"; } ? k : never]?: Shape[k]["output"] | undefined; } & { [k in keyof Shape as Shape[k] extends { optional: "true"; } ? never : k]: Shape[k]["output"]; })[K]; } : never
{
[k in keyof Shape as Shape[k] extends { optional: "true" }
>optional : "true"
@@ -44,7 +44,7 @@ interface ZodObject