@@ -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