@@ -30321,7 +30321,19 @@ var ts;
30321
30321
}
30322
30322
return anyType;
30323
30323
}
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
+ }
30324
30333
function getTypeOfSymbol(symbol) {
30334
+ if (ts.getCheckFlags(symbol) & 65536) {
30335
+ return getTypeOfSymbolWithDeferredType(symbol);
30336
+ }
30325
30337
if (ts.getCheckFlags(symbol) & 1) {
30326
30338
return getTypeOfInstantiatedSymbol(symbol);
30327
30339
}
@@ -32062,7 +32074,14 @@ var ts;
32062
32074
}
32063
32075
result.declarations = declarations;
32064
32076
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
+ }
32066
32085
return result;
32067
32086
}
32068
32087
function getUnionOrIntersectionProperty(type, name) {
@@ -35596,8 +35615,8 @@ var ts;
35596
35615
}
35597
35616
return false;
35598
35617
}
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);
35601
35620
}
35602
35621
function checkTypeRelatedTo(source, target, relation, errorNode, headMessage, containingMessageChain, errorOutputContainer) {
35603
35622
var errorInfo;
@@ -36546,6 +36565,43 @@ var ts;
36546
36565
}
36547
36566
return result || properties;
36548
36567
}
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
+ }
36549
36605
function propertyRelatedTo(source, target, sourceProp, targetProp, getTypeOfSourceProperty, reportErrors) {
36550
36606
var sourcePropFlags = ts.getDeclarationModifierFlagsFromSymbol(sourceProp);
36551
36607
var targetPropFlags = ts.getDeclarationModifierFlagsFromSymbol(targetProp);
@@ -36583,7 +36639,7 @@ var ts;
36583
36639
}
36584
36640
return 0;
36585
36641
}
36586
- var related = isRelatedTo(getTypeOfSourceProperty( sourceProp), addOptionality(getTypeOfSymbol( targetProp), !!(ts.getCheckFlags(targetProp) & 48)) , reportErrors);
36642
+ var related = isPropertySymbolTypeRelated( sourceProp, targetProp, getTypeOfSourceProperty , reportErrors);
36587
36643
if (!related) {
36588
36644
if (reportErrors) {
36589
36645
reportError(ts.Diagnostics.Types_of_property_0_are_incompatible, symbolToString(targetProp));
@@ -36684,9 +36740,6 @@ var ts;
36684
36740
if (!(targetProp.flags & 4194304)) {
36685
36741
var sourceProp = getPropertyOfType(source, targetProp.escapedName);
36686
36742
if (sourceProp && sourceProp !== targetProp) {
36687
- if (isIgnoredJsxProperty(source, sourceProp, getTypeOfSymbol(targetProp))) {
36688
- continue;
36689
- }
36690
36743
var related = propertyRelatedTo(source, target, sourceProp, targetProp, getTypeOfSymbol, reportErrors);
36691
36744
if (!related) {
36692
36745
return 0;
@@ -36805,7 +36858,7 @@ var ts;
36805
36858
var result = -1;
36806
36859
for (var _i = 0, _a = getPropertiesOfObjectType(source); _i < _a.length; _i++) {
36807
36860
var prop = _a[_i];
36808
- if (isIgnoredJsxProperty(source, prop, undefined )) {
36861
+ if (isIgnoredJsxProperty(source, prop)) {
36809
36862
continue;
36810
36863
}
36811
36864
if (prop.nameType && prop.nameType.flags & 8192) {
@@ -37494,23 +37547,31 @@ var ts;
37494
37547
}
37495
37548
function getWidenedTypeWithContext(type, context) {
37496
37549
if (ts.getObjectFlags(type) & 393216) {
37550
+ if (context === undefined && type.widened) {
37551
+ return type.widened;
37552
+ }
37553
+ var result = void 0;
37497
37554
if (type.flags & 98304) {
37498
- return anyType;
37555
+ result = anyType;
37499
37556
}
37500
- if (isObjectLiteralType(type)) {
37501
- return getWidenedTypeOfObjectLiteral(type, context);
37557
+ else if (isObjectLiteralType(type)) {
37558
+ result = getWidenedTypeOfObjectLiteral(type, context);
37502
37559
}
37503
- if (type.flags & 1048576) {
37560
+ else if (type.flags & 1048576) {
37504
37561
var unionContext_1 = context || createWideningContext(undefined, undefined, type.types);
37505
37562
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));
37507
37567
}
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));
37510
37570
}
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 ;
37513
37573
}
37574
+ return result || type;
37514
37575
}
37515
37576
return type;
37516
37577
}
@@ -45984,10 +46045,10 @@ var ts;
45984
46045
case 249:
45985
46046
case 252:
45986
46047
case 251:
45987
- var result_6 = 0;
46048
+ var result_7 = 0;
45988
46049
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 ;
45991
46052
case 238:
45992
46053
case 187:
45993
46054
case 240:
@@ -73263,13 +73324,13 @@ var ts;
73263
73324
}
73264
73325
var oldSourceFile = oldProgram && oldProgram.getSourceFile(containingFile);
73265
73326
if (oldSourceFile !== file && file.resolvedModules) {
73266
- var result_7 = [];
73327
+ var result_8 = [];
73267
73328
for (var _i = 0, moduleNames_1 = moduleNames; _i < moduleNames_1.length; _i++) {
73268
73329
var moduleName = moduleNames_1[_i];
73269
73330
var resolvedModule = file.resolvedModules.get(moduleName);
73270
- result_7 .push(resolvedModule);
73331
+ result_8 .push(resolvedModule);
73271
73332
}
73272
- return result_7 ;
73333
+ return result_8 ;
73273
73334
}
73274
73335
var unknownModuleNames;
73275
73336
var result;
0 commit comments