Skip to content

Commit f819259

Browse files
committed
Intersection with 'never' type always produces 'never'
1 parent a404eda commit f819259

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

src/compiler/checker.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7168,6 +7168,7 @@ namespace ts {
71687168
containsAny?: boolean;
71697169
containsUndefined?: boolean;
71707170
containsNull?: boolean;
7171+
containsNever?: boolean;
71717172
containsNonWideningType?: boolean;
71727173
containsString?: boolean;
71737174
containsNumber?: boolean;
@@ -7369,10 +7370,13 @@ namespace ts {
73697370
else if (type.flags & TypeFlags.Any) {
73707371
typeSet.containsAny = true;
73717372
}
7373+
else if (type.flags & TypeFlags.Never) {
7374+
typeSet.containsNever = true;
7375+
}
73727376
else if (getObjectFlags(type) & ObjectFlags.Anonymous && isEmptyObjectType(type)) {
73737377
typeSet.containsEmptyObject = true;
73747378
}
7375-
else if (!(type.flags & TypeFlags.Never) && (strictNullChecks || !(type.flags & TypeFlags.Nullable)) && !contains(typeSet, type)) {
7379+
else if ((strictNullChecks || !(type.flags & TypeFlags.Nullable)) && !contains(typeSet, type)) {
73767380
if (type.flags & TypeFlags.Object) {
73777381
typeSet.containsObjectType = true;
73787382
}
@@ -7410,6 +7414,9 @@ namespace ts {
74107414
}
74117415
const typeSet = [] as TypeSet;
74127416
addTypesToIntersection(typeSet, types);
7417+
if (typeSet.containsNever) {
7418+
return neverType;
7419+
}
74137420
if (typeSet.containsAny) {
74147421
return anyType;
74157422
}

0 commit comments

Comments
 (0)