@@ -170,7 +170,7 @@ var ts;
170170var ts;
171171(function (ts) {
172172 ts.versionMajorMinor = "2.8";
173- ts.version = ts.versionMajorMinor + ".2 ";
173+ ts.version = ts.versionMajorMinor + ".3 ";
174174})(ts || (ts = {}));
175175(function (ts) {
176176 function isExternalModuleNameRelative(moduleName) {
@@ -21926,6 +21926,9 @@ var ts;
2192621926 if (initializer) {
2192721927 namespace = getSymbolOfNode(initializer);
2192821928 }
21929+ if (!namespace) {
21930+ return undefined;
21931+ }
2192921932 if (namespace.valueDeclaration &&
2193021933 ts.isVariableDeclaration(namespace.valueDeclaration) &&
2193121934 namespace.valueDeclaration.initializer &&
@@ -25267,14 +25270,22 @@ var ts;
2526725270 return baseObjectType || baseIndexType ? getIndexedAccessType(baseObjectType || type.objectType, baseIndexType || type.indexType) : undefined;
2526825271 }
2526925272 function getDefaultConstraintOfConditionalType(type) {
25270- return getUnionType([getTrueTypeFromConditionalType(type), getFalseTypeFromConditionalType(type)]);
25273+ if (!type.resolvedDefaultConstraint) {
25274+ var rootTrueType = type.root.trueType;
25275+ var rootTrueConstraint = rootTrueType.flags & 4194304 ? rootTrueType.substitute : rootTrueType;
25276+ type.resolvedDefaultConstraint = getUnionType([instantiateType(rootTrueConstraint, type.combinedMapper || type.mapper), getFalseTypeFromConditionalType(type)]);
25277+ }
25278+ return type.resolvedDefaultConstraint;
2527125279 }
2527225280 function getConstraintOfDistributiveConditionalType(type) {
2527325281 if (type.root.isDistributive) {
2527425282 var constraint = getConstraintOfType(type.checkType);
2527525283 if (constraint) {
2527625284 var mapper = createTypeMapper([type.root.checkType], [constraint]);
25277- return getConditionalTypeInstantiation(type, combineTypeMappers(mapper, type.mapper));
25285+ var instantiated = getConditionalTypeInstantiation(type, combineTypeMappers(mapper, type.mapper));
25286+ if (!(instantiated.flags & 16384)) {
25287+ return instantiated;
25288+ }
2527825289 }
2527925290 }
2528025291 return undefined;
@@ -26207,7 +26218,7 @@ var ts;
2620726218 }
2620826219 function getConstrainedTypeVariable(typeVariable, node) {
2620926220 var constraints;
26210- while (ts.isPartOfTypeNode (node)) {
26221+ while (node && ! ts.isStatement (node)) {
2621126222 var parent = node.parent;
2621226223 if (parent.kind === 170 && node === parent.trueType) {
2621326224 var constraint = getImpliedConstraint(typeVariable, parent.checkType, parent.extendsType);
@@ -26757,12 +26768,16 @@ var ts;
2675726768 }
2675826769 return links.resolvedType;
2675926770 }
26760- function getIndexTypeForGenericType(type) {
26761- if (!type.resolvedIndexType) {
26762- type.resolvedIndexType = createType(524288);
26763- type.resolvedIndexType.type = type;
26771+ function getIndexTypeForGenericType(type, includeDeclaredTypes) {
26772+ var cacheLocation = includeDeclaredTypes ? "resolvedDeclaredIndexType" : "resolvedIndexType";
26773+ if (!type[cacheLocation]) {
26774+ type[cacheLocation] = createType(524288);
26775+ type[cacheLocation].type = type;
26776+ if (includeDeclaredTypes) {
26777+ type[cacheLocation].isDeclaredType = true;
26778+ }
2676426779 }
26765- return type.resolvedIndexType ;
26780+ return type[cacheLocation] ;
2676626781 }
2676726782 function getLiteralTypeFromPropertyName(prop) {
2676826783 var links = getSymbolLinks(getLateBoundSymbol(prop));
@@ -26778,16 +26793,20 @@ var ts;
2677826793 }
2677926794 return links.nameType;
2678026795 }
26781- function getLiteralTypeFromPropertyNames (type) {
26782- return getUnionType(ts.map(getPropertiesOfType( type), getLiteralTypeFromPropertyName) );
26796+ function isTypeString (type) {
26797+ return isTypeAssignableToKind( type, 524322 );
2678326798 }
26784- function getIndexType(type) {
26785- return type.flags & 262144 ? getUnionType(ts.map(type.types, function (t) { return getIndexType(t); })) :
26786- maybeTypeOfKind(type, 7372800) ? getIndexTypeForGenericType(type) :
26799+ function getLiteralTypeFromPropertyNames(type, includeDeclaredTypes) {
26800+ var originalKeys = ts.map(getPropertiesOfType(type), getLiteralTypeFromPropertyName);
26801+ return getUnionType(includeDeclaredTypes ? originalKeys : ts.filter(originalKeys, isTypeString));
26802+ }
26803+ function getIndexType(type, includeDeclaredTypes) {
26804+ return type.flags & 262144 ? getUnionType(ts.map(type.types, function (t) { return getIndexType(t, includeDeclaredTypes); })) :
26805+ maybeTypeOfKind(type, 7372800) ? getIndexTypeForGenericType(type, includeDeclaredTypes) :
2678726806 ts.getObjectFlags(type) & 32 ? getConstraintTypeFromMappedType(type) :
2678826807 type === wildcardType ? wildcardType :
2678926808 type.flags & 1 || getIndexInfoOfType(type, 0) ? stringType :
26790- getLiteralTypeFromPropertyNames(type);
26809+ getLiteralTypeFromPropertyNames(type, includeDeclaredTypes );
2679126810 }
2679226811 function getIndexTypeOrString(type) {
2679326812 var indexType = getIndexType(type);
@@ -27000,13 +27019,16 @@ var ts;
2700027019 if (checkType === wildcardType || extendsType === wildcardType) {
2700127020 return wildcardType;
2700227021 }
27003- if (!root.isDistributive || !maybeTypeOfKind(checkType, 7897088)) {
27004- var combinedMapper = void 0;
27005- if (root.inferTypeParameters) {
27006- var context = createInferenceContext(root.inferTypeParameters, undefined, 0);
27022+ var isDeferred = root.isDistributive && maybeTypeOfKind(checkType, 7897088);
27023+ var combinedMapper;
27024+ if (root.inferTypeParameters) {
27025+ var context = createInferenceContext(root.inferTypeParameters, undefined, 0);
27026+ if (!isDeferred) {
2700727027 inferTypes(context.inferences, checkType, extendsType, 32 | 64);
27008- combinedMapper = combineTypeMappers(mapper, context);
2700927028 }
27029+ combinedMapper = combineTypeMappers(mapper, context);
27030+ }
27031+ if (!isDeferred) {
2701027032 if (checkType.flags & 1) {
2701127033 return getUnionType([instantiateType(root.trueType, combinedMapper || mapper), instantiateType(root.falseType, mapper)]);
2701227034 }
@@ -27024,6 +27046,7 @@ var ts;
2702427046 result.checkType = erasedCheckType;
2702527047 result.extendsType = extendsType;
2702627048 result.mapper = mapper;
27049+ result.combinedMapper = combinedMapper;
2702727050 result.aliasSymbol = root.aliasSymbol;
2702827051 result.aliasTypeArguments = instantiateTypes(root.aliasTypeArguments, mapper);
2702927052 return result;
@@ -27045,13 +27068,27 @@ var ts;
2704527068 }
2704627069 return result;
2704727070 }
27071+ function isPossiblyReferencedInConditionalType(tp, node) {
27072+ if (isTypeParameterPossiblyReferenced(tp, node)) {
27073+ return true;
27074+ }
27075+ while (node) {
27076+ if (node.kind === 170) {
27077+ if (isTypeParameterPossiblyReferenced(tp, node.extendsType)) {
27078+ return true;
27079+ }
27080+ }
27081+ node = node.parent;
27082+ }
27083+ return false;
27084+ }
2704827085 function getTypeFromConditionalTypeNode(node) {
2704927086 var links = getNodeLinks(node);
2705027087 if (!links.resolvedType) {
2705127088 var checkType = getTypeFromTypeNode(node.checkType);
2705227089 var aliasTypeArguments = getAliasTypeArgumentsForTypeNode(node);
2705327090 var allOuterTypeParameters = getOuterTypeParameters(node, true);
27054- var outerTypeParameters = aliasTypeArguments ? allOuterTypeParameters : ts.filter(allOuterTypeParameters, function (tp) { return isTypeParameterPossiblyReferenced (tp, node); });
27091+ var outerTypeParameters = aliasTypeArguments ? allOuterTypeParameters : ts.filter(allOuterTypeParameters, function (tp) { return isPossiblyReferencedInConditionalType (tp, node); });
2705527092 var root = {
2705627093 node: node,
2705727094 checkType: checkType,
@@ -27507,6 +27544,10 @@ var ts;
2750727544 }
2750827545 return type;
2750927546 }
27547+ function maybeTypeParameterReference(node) {
27548+ return !(node.kind === 145 ||
27549+ node.parent.kind === 161 && node.parent.typeArguments && node === node.parent.typeName);
27550+ }
2751027551 function isTypeParameterPossiblyReferenced(tp, node) {
2751127552 if (tp.symbol && tp.symbol.declarations && tp.symbol.declarations.length === 1) {
2751227553 var container_2 = tp.symbol.declarations[0].parent;
@@ -27520,7 +27561,8 @@ var ts;
2752027561 case 173:
2752127562 return tp.isThisType;
2752227563 case 71:
27523- return !tp.isThisType && ts.isPartOfTypeNode(node) && getTypeFromTypeNode(node) === tp;
27564+ return !tp.isThisType && ts.isPartOfTypeNode(node) && maybeTypeParameterReference(node) &&
27565+ getTypeFromTypeNode(node) === tp;
2752427566 case 164:
2752527567 return true;
2752627568 }
@@ -28481,7 +28523,7 @@ var ts;
2848128523 }
2848228524 var constraint = getConstraintForRelation(target.type);
2848328525 if (constraint) {
28484- if (result = isRelatedTo(source, getIndexType(constraint), reportErrors)) {
28526+ if (result = isRelatedTo(source, getIndexType(constraint, target.isDeclaredType ), reportErrors)) {
2848528527 return result;
2848628528 }
2848728529 }
@@ -36375,7 +36417,7 @@ var ts;
3637536417 }
3637636418 var objectType = type.objectType;
3637736419 var indexType = type.indexType;
36378- if (isTypeAssignableTo(indexType, getIndexType(objectType))) {
36420+ if (isTypeAssignableTo(indexType, getIndexType(objectType, true ))) {
3637936421 if (accessNode.kind === 184 && ts.isAssignmentTarget(accessNode) &&
3638036422 ts.getObjectFlags(objectType) & 32 && getMappedTypeModifiers(objectType) & 1) {
3638136423 error(accessNode, ts.Diagnostics.Index_signature_in_type_0_only_permits_reading, typeToString(objectType));
0 commit comments