@@ -2053,7 +2053,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
20532053 var noConstraintType = createAnonymousType(/*symbol*/ undefined, emptySymbols, emptyArray, emptyArray, emptyArray);
20542054 var circularConstraintType = createAnonymousType(/*symbol*/ undefined, emptySymbols, emptyArray, emptyArray, emptyArray);
20552055 var resolvingDefaultType = createAnonymousType(/*symbol*/ undefined, emptySymbols, emptyArray, emptyArray, emptyArray);
2056- var resolvingApparentMappedType = createAnonymousType(/*symbol*/ undefined, emptySymbols, emptyArray, emptyArray, emptyArray);
20572056
20582057 var markerSuperType = createTypeParameter();
20592058 var markerSubType = createTypeParameter();
@@ -14539,32 +14538,15 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1453914538 }
1454014539
1454114540 function getApparentTypeOfMappedType(type: MappedType) {
14542- if (type.resolvedApparentType) {
14543- if (type.resolvedApparentType === resolvingApparentMappedType) {
14544- return type.resolvedApparentType = type;
14545- }
14546- return type.resolvedApparentType;
14547- }
14548- type.resolvedApparentType = resolvingApparentMappedType;
14549- return type.resolvedApparentType = getResolvedApparentTypeOfMappedType(type);
14541+ return type.resolvedApparentType || (type.resolvedApparentType = getResolvedApparentTypeOfMappedType(type));
1455014542 }
1455114543
1455214544 function getResolvedApparentTypeOfMappedType(type: MappedType) {
14553- const mappedType = type.target as MappedType || type;
14554- const typeVariable = getHomomorphicTypeVariable(mappedType);
14555- if (typeVariable && !mappedType.declaration.nameType) {
14556- let constraint: Type | undefined;
14557- if (!type.target) {
14558- constraint = getConstraintOfTypeParameter(typeVariable);
14559- }
14560- else {
14561- const modifiersConstraint = getConstraintOfType(getModifiersTypeFromMappedType(type));
14562- if (modifiersConstraint) {
14563- constraint = getApparentType(modifiersConstraint);
14564- }
14565- }
14545+ const typeVariable = getHomomorphicTypeVariable(type);
14546+ if (typeVariable && !type.declaration.nameType) {
14547+ const constraint = getConstraintOfTypeParameter(typeVariable);
1456614548 if (constraint && everyType(constraint, isArrayOrTupleType)) {
14567- return instantiateType(mappedType , prependTypeMapping(typeVariable, constraint, mappedType .mapper));
14549+ return instantiateType(type , prependTypeMapping(typeVariable, constraint, type .mapper));
1456814550 }
1456914551 }
1457014552 return type;
0 commit comments