Skip to content

Commit 3e34273

Browse files
committed
Use the suggested alternative fix
1 parent ed570b8 commit 3e34273

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/compiler/checker.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16270,7 +16270,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1627016270
}
1627116271

1627216272
// This function assumes the constituent type list is sorted and deduplicated.
16273-
function getUnionTypeFromSortedList(types: Type[], objectFlags: ObjectFlags, aliasSymbol?: Symbol, aliasTypeArguments?: readonly Type[], origin?: Type): Type {
16273+
function getUnionTypeFromSortedList(types: Type[], precomputedObjectFlags: ObjectFlags, aliasSymbol?: Symbol, aliasTypeArguments?: readonly Type[], origin?: Type): Type {
1627416274
if (types.length === 0) {
1627516275
return neverType;
1627616276
}
@@ -16285,7 +16285,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1628516285
let type = unionTypes.get(id);
1628616286
if (!type) {
1628716287
type = createType(TypeFlags.Union) as UnionType;
16288-
type.objectFlags = (objectFlags | getPropagatingFlagsOfTypes(types, /*excludeKinds*/ TypeFlags.Nullable)) & ~(ObjectFlags.IsUnknownLikeUnionComputed | ObjectFlags.IsUnknownLikeUnion);
16288+
type.objectFlags = precomputedObjectFlags | getPropagatingFlagsOfTypes(types, /*excludeKinds*/ TypeFlags.Nullable);
1628916289
type.types = types;
1629016290
type.origin = origin;
1629116291
type.aliasSymbol = aliasSymbol;
@@ -25649,7 +25649,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2564925649
newOrigin = createOriginUnionOrIntersectionType(TypeFlags.Union, originFiltered);
2565025650
}
2565125651
}
25652-
return getUnionTypeFromSortedList(filtered, (type as UnionType).objectFlags, /*aliasSymbol*/ undefined, /*aliasTypeArguments*/ undefined, newOrigin);
25652+
// filtering could remove intersections so `ContainsIntersections` might be forwarded "incorrectly"
25653+
// it is purely an optimization hint so there is no harm in accidentally forwarding it
25654+
return getUnionTypeFromSortedList(filtered, (type as UnionType).objectFlags & (ObjectFlags.PrimitiveUnion | ObjectFlags.ContainsIntersections), /*aliasSymbol*/ undefined, /*aliasTypeArguments*/ undefined, newOrigin);
2565325655
}
2565425656
return type.flags & TypeFlags.Never || f(type) ? type : neverType;
2565525657
}

0 commit comments

Comments
 (0)