Skip to content

Commit a43adad

Browse files
committed
Simplify DeferredMappedType construction
1 parent 3524423 commit a43adad

2 files changed

Lines changed: 5 additions & 8 deletions

File tree

src/compiler/checker.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6115,12 +6115,12 @@ namespace ts {
61156115
}
61166116

61176117
function resolveDeferredMappedTypeMembers(type: DeferredMappedType) {
6118-
const indexInfo = type.targetIndexInfo;
6118+
const indexInfo = getIndexInfoOfType(type.source, IndexKind.String);
61196119
const readonlyMask = type.mappedType.declaration.readonlyToken ? false : true;
61206120
const optionalMask = type.mappedType.declaration.questionToken ? 0 : SymbolFlags.Optional;
61216121
const stringIndexInfo = indexInfo && createIndexInfo(inferDeferredMappedType(indexInfo.type, type.mappedType), readonlyMask && indexInfo.isReadonly);
61226122
const members = createSymbolTable();
6123-
for (const prop of type.sourceProperties) {
6123+
for (const prop of getPropertiesOfType(type.source)) {
61246124
const checkFlags = CheckFlags.Deferred | (readonlyMask && isReadonlySymbol(prop) ? CheckFlags.Readonly : 0);
61256125
const inferredProp = createSymbol(SymbolFlags.Property | prop.flags & optionalMask, prop.escapedName, checkFlags) as DeferredTransientSymbol;
61266126
inferredProp.declarations = prop.declarations;
@@ -11312,8 +11312,7 @@ namespace ts {
1131211312

1131311313
function createDeferredMappedType(source: Type, target: MappedType) {
1131411314
const properties = getPropertiesOfType(source);
11315-
let indexInfo = getIndexInfoOfType(source, IndexKind.String);
11316-
if (properties.length === 0 && !indexInfo) {
11315+
if (properties.length === 0 && !getIndexInfoOfType(source, IndexKind.String)) {
1131711316
return undefined;
1131811317
}
1131911318
// If any property contains context sensitive functions that have been skipped, the source type
@@ -11324,9 +11323,8 @@ namespace ts {
1132411323
}
1132511324
}
1132611325
const deferred = createObjectType(ObjectFlags.Deferred | ObjectFlags.Anonymous, undefined) as DeferredMappedType;
11326+
deferred.source = source;
1132711327
deferred.mappedType = target;
11328-
deferred.sourceProperties = properties;
11329-
deferred.targetIndexInfo = indexInfo;
1133011328
return deferred;
1133111329
}
1133211330

src/compiler/types.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3611,9 +3611,8 @@ namespace ts {
36113611

36123612
/* @internal */
36133613
export interface DeferredMappedType extends ObjectType {
3614-
targetIndexInfo?: IndexInfo;
3614+
source: Type;
36153615
mappedType: MappedType;
3616-
sourceProperties: Symbol[];
36173616
}
36183617

36193618
/* @internal */

0 commit comments

Comments
 (0)