@@ -30321,7 +30321,19 @@ var ts;
3032130321 }
3032230322 return anyType;
3032330323 }
30324+ function getTypeOfSymbolWithDeferredType(symbol) {
30325+ var links = getSymbolLinks(symbol);
30326+ if (!links.type) {
30327+ ts.Debug.assertDefined(links.deferralParent);
30328+ ts.Debug.assertDefined(links.deferralConstituents);
30329+ links.type = links.deferralParent.flags & 1048576 ? getUnionType(links.deferralConstituents) : getIntersectionType(links.deferralConstituents);
30330+ }
30331+ return links.type;
30332+ }
3032430333 function getTypeOfSymbol(symbol) {
30334+ if (ts.getCheckFlags(symbol) & 65536) {
30335+ return getTypeOfSymbolWithDeferredType(symbol);
30336+ }
3032530337 if (ts.getCheckFlags(symbol) & 1) {
3032630338 return getTypeOfInstantiatedSymbol(symbol);
3032730339 }
@@ -32062,7 +32074,14 @@ var ts;
3206232074 }
3206332075 result.declarations = declarations;
3206432076 result.nameType = nameType;
32065- result.type = isUnion ? getUnionType(propTypes) : getIntersectionType(propTypes);
32077+ if (propTypes.length > 2) {
32078+ result.checkFlags |= 65536;
32079+ result.deferralParent = containingType;
32080+ result.deferralConstituents = propTypes;
32081+ }
32082+ else {
32083+ result.type = isUnion ? getUnionType(propTypes) : getIntersectionType(propTypes);
32084+ }
3206632085 return result;
3206732086 }
3206832087 function getUnionOrIntersectionProperty(type, name) {
@@ -35596,8 +35615,8 @@ var ts;
3559635615 }
3559735616 return false;
3559835617 }
35599- function isIgnoredJsxProperty(source, sourceProp, targetMemberType ) {
35600- return ts.getObjectFlags(source) & 4096 && !( isUnhyphenatedJsxName(sourceProp.escapedName) || targetMemberType );
35618+ function isIgnoredJsxProperty(source, sourceProp) {
35619+ return ts.getObjectFlags(source) & 4096 && !isUnhyphenatedJsxName(sourceProp.escapedName);
3560135620 }
3560235621 function checkTypeRelatedTo(source, target, relation, errorNode, headMessage, containingMessageChain, errorOutputContainer) {
3560335622 var errorInfo;
@@ -36546,6 +36565,43 @@ var ts;
3654636565 }
3654736566 return result || properties;
3654836567 }
36568+ function isPropertySymbolTypeRelated(sourceProp, targetProp, getTypeOfSourceProperty, reportErrors) {
36569+ var targetIsOptional = strictNullChecks && !!(ts.getCheckFlags(targetProp) & 48);
36570+ var source = getTypeOfSourceProperty(sourceProp);
36571+ if (ts.getCheckFlags(targetProp) & 65536 && !getSymbolLinks(targetProp).type) {
36572+ var links = getSymbolLinks(targetProp);
36573+ ts.Debug.assertDefined(links.deferralParent);
36574+ ts.Debug.assertDefined(links.deferralConstituents);
36575+ var unionParent = !!(links.deferralParent.flags & 1048576);
36576+ var result_6 = unionParent ? 0 : -1;
36577+ var targetTypes = links.deferralConstituents;
36578+ for (var _i = 0, targetTypes_3 = targetTypes; _i < targetTypes_3.length; _i++) {
36579+ var targetType = targetTypes_3[_i];
36580+ var related = isRelatedTo(source, targetType, false, undefined, !unionParent);
36581+ if (!unionParent) {
36582+ if (!related) {
36583+ return isRelatedTo(source, addOptionality(getTypeOfSymbol(targetProp), targetIsOptional), reportErrors);
36584+ }
36585+ result_6 &= related;
36586+ }
36587+ else {
36588+ if (related) {
36589+ return related;
36590+ }
36591+ }
36592+ }
36593+ if (unionParent && !result_6 && targetIsOptional) {
36594+ result_6 = isRelatedTo(source, undefinedType);
36595+ }
36596+ if (unionParent && !result_6 && reportErrors) {
36597+ return isRelatedTo(source, addOptionality(getTypeOfSymbol(targetProp), targetIsOptional), reportErrors);
36598+ }
36599+ return result_6;
36600+ }
36601+ else {
36602+ return isRelatedTo(source, addOptionality(getTypeOfSymbol(targetProp), targetIsOptional), reportErrors);
36603+ }
36604+ }
3654936605 function propertyRelatedTo(source, target, sourceProp, targetProp, getTypeOfSourceProperty, reportErrors) {
3655036606 var sourcePropFlags = ts.getDeclarationModifierFlagsFromSymbol(sourceProp);
3655136607 var targetPropFlags = ts.getDeclarationModifierFlagsFromSymbol(targetProp);
@@ -36583,7 +36639,7 @@ var ts;
3658336639 }
3658436640 return 0;
3658536641 }
36586- var related = isRelatedTo(getTypeOfSourceProperty( sourceProp), addOptionality(getTypeOfSymbol( targetProp), !!(ts.getCheckFlags(targetProp) & 48)) , reportErrors);
36642+ var related = isPropertySymbolTypeRelated( sourceProp, targetProp, getTypeOfSourceProperty , reportErrors);
3658736643 if (!related) {
3658836644 if (reportErrors) {
3658936645 reportError(ts.Diagnostics.Types_of_property_0_are_incompatible, symbolToString(targetProp));
@@ -36684,9 +36740,6 @@ var ts;
3668436740 if (!(targetProp.flags & 4194304)) {
3668536741 var sourceProp = getPropertyOfType(source, targetProp.escapedName);
3668636742 if (sourceProp && sourceProp !== targetProp) {
36687- if (isIgnoredJsxProperty(source, sourceProp, getTypeOfSymbol(targetProp))) {
36688- continue;
36689- }
3669036743 var related = propertyRelatedTo(source, target, sourceProp, targetProp, getTypeOfSymbol, reportErrors);
3669136744 if (!related) {
3669236745 return 0;
@@ -36805,7 +36858,7 @@ var ts;
3680536858 var result = -1;
3680636859 for (var _i = 0, _a = getPropertiesOfObjectType(source); _i < _a.length; _i++) {
3680736860 var prop = _a[_i];
36808- if (isIgnoredJsxProperty(source, prop, undefined )) {
36861+ if (isIgnoredJsxProperty(source, prop)) {
3680936862 continue;
3681036863 }
3681136864 if (prop.nameType && prop.nameType.flags & 8192) {
@@ -37494,23 +37547,31 @@ var ts;
3749437547 }
3749537548 function getWidenedTypeWithContext(type, context) {
3749637549 if (ts.getObjectFlags(type) & 393216) {
37550+ if (context === undefined && type.widened) {
37551+ return type.widened;
37552+ }
37553+ var result = void 0;
3749737554 if (type.flags & 98304) {
37498- return anyType;
37555+ result = anyType;
3749937556 }
37500- if (isObjectLiteralType(type)) {
37501- return getWidenedTypeOfObjectLiteral(type, context);
37557+ else if (isObjectLiteralType(type)) {
37558+ result = getWidenedTypeOfObjectLiteral(type, context);
3750237559 }
37503- if (type.flags & 1048576) {
37560+ else if (type.flags & 1048576) {
3750437561 var unionContext_1 = context || createWideningContext(undefined, undefined, type.types);
3750537562 var widenedTypes = ts.sameMap(type.types, function (t) { return t.flags & 98304 ? t : getWidenedTypeWithContext(t, unionContext_1); });
37506- return getUnionType(widenedTypes, ts.some(widenedTypes, isEmptyObjectType) ? 2 : 1);
37563+ result = getUnionType(widenedTypes, ts.some(widenedTypes, isEmptyObjectType) ? 2 : 1);
37564+ }
37565+ else if (type.flags & 2097152) {
37566+ result = getIntersectionType(ts.sameMap(type.types, getWidenedType));
3750737567 }
37508- if (type.flags & 2097152 ) {
37509- return getIntersectionType( ts.sameMap(type.types , getWidenedType));
37568+ else if (isArrayType( type) || isTupleType(type) ) {
37569+ result = createTypeReference(type.target, ts.sameMap(type.typeArguments , getWidenedType));
3751037570 }
37511- if (isArrayType(type) || isTupleType(type) ) {
37512- return createTypeReference( type.target, ts.sameMap(type.typeArguments, getWidenedType)) ;
37571+ if (result && context === undefined ) {
37572+ type.widened = result ;
3751337573 }
37574+ return result || type;
3751437575 }
3751537576 return type;
3751637577 }
@@ -45984,10 +46045,10 @@ var ts;
4598446045 case 249:
4598546046 case 252:
4598646047 case 251:
45987- var result_6 = 0;
46048+ var result_7 = 0;
4598846049 var target = resolveAlias(getSymbolOfNode(d));
45989- ts.forEach(target.declarations, function (d) { result_6 |= getDeclarationSpaces(d); });
45990- return result_6 ;
46050+ ts.forEach(target.declarations, function (d) { result_7 |= getDeclarationSpaces(d); });
46051+ return result_7 ;
4599146052 case 238:
4599246053 case 187:
4599346054 case 240:
@@ -73263,13 +73324,13 @@ var ts;
7326373324 }
7326473325 var oldSourceFile = oldProgram && oldProgram.getSourceFile(containingFile);
7326573326 if (oldSourceFile !== file && file.resolvedModules) {
73266- var result_7 = [];
73327+ var result_8 = [];
7326773328 for (var _i = 0, moduleNames_1 = moduleNames; _i < moduleNames_1.length; _i++) {
7326873329 var moduleName = moduleNames_1[_i];
7326973330 var resolvedModule = file.resolvedModules.get(moduleName);
73270- result_7 .push(resolvedModule);
73331+ result_8 .push(resolvedModule);
7327173332 }
73272- return result_7 ;
73333+ return result_8 ;
7327373334 }
7327473335 var unknownModuleNames;
7327573336 var result;
0 commit comments