@@ -15438,7 +15438,7 @@ namespace ts {
15438
15438
}
15439
15439
else {
15440
15440
if (target.flags & TypeFlags.Union) {
15441
- result = typeRelatedToSomeType(getRegularTypeOfObjectLiteral(source), <UnionType>target, reportErrors && !(source.flags & TypeFlags.Primitive) && !(target.flags & TypeFlags.Primitive));
15441
+ result = typeRelatedToSomeType(getRegularTypeOfObjectLiteral(source), <UnionType>target, reportErrors && !(source.flags & TypeFlags.Primitive) && !(target.flags & TypeFlags.Primitive), intersectionState & IntersectionState.ExcessCheck );
15442
15442
}
15443
15443
else if (target.flags & TypeFlags.Intersection) {
15444
15444
result = typeRelatedToEachType(getRegularTypeOfObjectLiteral(source), target as IntersectionType, reportErrors, intersectionState & IntersectionState.ExcessCheck | IntersectionState.Target);
@@ -15655,7 +15655,7 @@ namespace ts {
15655
15655
let result = Ternary.True;
15656
15656
const sourceTypes = source.types;
15657
15657
for (const sourceType of sourceTypes) {
15658
- const related = typeRelatedToSomeType(sourceType, target, /*reportErrors*/ false);
15658
+ const related = typeRelatedToSomeType(sourceType, target, /*reportErrors*/ false, IntersectionState.None );
15659
15659
if (!related) {
15660
15660
return Ternary.False;
15661
15661
}
@@ -15664,20 +15664,20 @@ namespace ts {
15664
15664
return result;
15665
15665
}
15666
15666
15667
- function typeRelatedToSomeType(source: Type, target: UnionOrIntersectionType, reportErrors: boolean): Ternary {
15667
+ function typeRelatedToSomeType(source: Type, target: UnionOrIntersectionType, reportErrors: boolean, intersectionState: IntersectionState ): Ternary {
15668
15668
const targetTypes = target.types;
15669
15669
if (target.flags & TypeFlags.Union && containsType(targetTypes, source)) {
15670
15670
return Ternary.True;
15671
15671
}
15672
15672
for (const type of targetTypes) {
15673
- const related = isRelatedTo(source, type, /*reportErrors*/ false);
15673
+ const related = isRelatedTo(source, type, /*reportErrors*/ false, /*headMessage*/ undefined, intersectionState );
15674
15674
if (related) {
15675
15675
return related;
15676
15676
}
15677
15677
}
15678
15678
if (reportErrors) {
15679
15679
const bestMatchingType = getBestMatchingType(source, target, isRelatedTo);
15680
- isRelatedTo(source, bestMatchingType || targetTypes[targetTypes.length - 1], /*reportErrors*/ true);
15680
+ isRelatedTo(source, bestMatchingType || targetTypes[targetTypes.length - 1], /*reportErrors*/ true, /*headMessage*/ undefined, intersectionState );
15681
15681
}
15682
15682
return Ternary.False;
15683
15683
}
0 commit comments