Skip to content

Commit 7deda06

Browse files
Update LKG
1 parent 82e54fd commit 7deda06

File tree

6 files changed

+341
-125
lines changed

6 files changed

+341
-125
lines changed

lib/tsc.js

Lines changed: 66 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ var ts;
170170
var 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

Comments
 (0)