Skip to content

Commit eb0e1e0

Browse files
committed
reuse typeParameter symbol
1 parent cc288b6 commit eb0e1e0

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

src/compiler/checker.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6653,7 +6653,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
66536653
// We do this to ensure we retain the toplevel keyof-ness of the type which may be lost due to keyof distribution during `getConstraintTypeFromMappedType`
66546654
if (isHomomorphicMappedTypeWithNonHomomorphicInstantiation(type) && context.flags & NodeBuilderFlags.GenerateNamesForShadowedTypeParams) {
66556655
const newConstraintParam = createTypeParameter(createSymbol(SymbolFlags.TypeParameter, "T" as __String));
6656-
const newTypeParam = createTypeParameter(createSymbol(SymbolFlags.TypeParameter, "K" as __String));
6656+
const newTypeParam = createTypeParameter(typeParameter.symbol);
66576657
const name = typeParameterToName(newConstraintParam, context);
66586658
const target = type.target as MappedType;
66596659
typeParameter = newTypeParam;

tests/baselines/reference/declarationEmitMappedTypePreservesTypeParameterConstraint.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,13 @@ export declare type ZodRawShape = {
9797
};
9898
export declare const buildSchema: <V extends string>(version: V) => addQuestionMarks<baseObjectOutputType<{
9999
version: ZodLiteral<V>;
100-
}>, undefined extends V ? never : "version"> extends infer T ? { [K in keyof T]: T[K]; } : never;
100+
}>, undefined extends V ? never : "version"> extends infer T ? { [k in keyof T]: T[k]; } : never;
101101
type evaluate<t> = {
102102
[k in keyof t]: t[k];
103103
} & unknown;
104104
export type entryOf<o> = evaluate<{
105105
[k in keyof o]-?: [k, o[k] & ({} | null)];
106106
}[o extends readonly unknown[] ? keyof o & number : keyof o]>;
107107
export type entriesOf<o extends object> = evaluate<entryOf<o>[]>;
108-
export declare const entriesOf: <o extends object>(o: o) => ({ [k in keyof o]-?: [k, o[k] & ({} | null)]; }[o extends readonly unknown[] ? keyof o & number : keyof o] extends infer T ? { [K in keyof T]: T[K]; } : never)[];
108+
export declare const entriesOf: <o extends object>(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]: T[k]; } : never)[];
109109
export {};

0 commit comments

Comments
 (0)