@@ -19390,6 +19390,9 @@ namespace ts {
19390
19390
if (flags & TypeFlags.NonPrimitive) {
19391
19391
return strictNullChecks ? TypeFacts.ObjectStrictFacts : TypeFacts.ObjectFacts;
19392
19392
}
19393
+ if (flags & TypeFlags.Never) {
19394
+ return TypeFacts.None;
19395
+ }
19393
19396
if (flags & TypeFlags.Instantiable) {
19394
19397
return getTypeFacts(getBaseConstraintOfType(type) || unknownType);
19395
19398
}
@@ -19626,7 +19629,7 @@ namespace ts {
19626
19629
const filtered = filter(types, f);
19627
19630
return filtered === types ? type : getUnionTypeFromSortedList(filtered, (<UnionType>type).objectFlags);
19628
19631
}
19629
- return f(type) ? type : neverType;
19632
+ return type.flags & TypeFlags.Never || f(type) ? type : neverType;
19630
19633
}
19631
19634
19632
19635
function countTypes(type: Type) {
@@ -28332,18 +28335,15 @@ namespace ts {
28332
28335
case SyntaxKind.InKeyword:
28333
28336
return checkInExpression(left, right, leftType, rightType);
28334
28337
case SyntaxKind.AmpersandAmpersandToken:
28335
- return leftType === nonInferrableType || rightType === nonInferrableType ? nonInferrableType :
28336
- getTypeFacts(leftType) & TypeFacts.Truthy ?
28338
+ return getTypeFacts(leftType) & TypeFacts.Truthy ?
28337
28339
getUnionType([extractDefinitelyFalsyTypes(strictNullChecks ? leftType : getBaseTypeOfLiteralType(rightType)), rightType]) :
28338
28340
leftType;
28339
28341
case SyntaxKind.BarBarToken:
28340
- return leftType === nonInferrableType || rightType === nonInferrableType ? nonInferrableType :
28341
- getTypeFacts(leftType) & TypeFacts.Falsy && leftType !== nonInferrableType ?
28342
+ return getTypeFacts(leftType) & TypeFacts.Falsy ?
28342
28343
getUnionType([removeDefinitelyFalsyTypes(leftType), rightType], UnionReduction.Subtype) :
28343
28344
leftType;
28344
28345
case SyntaxKind.QuestionQuestionToken:
28345
- return leftType === nonInferrableType || rightType === nonInferrableType ? nonInferrableType :
28346
- getTypeFacts(leftType) & TypeFacts.EQUndefinedOrNull && leftType !== nonInferrableType ?
28346
+ return getTypeFacts(leftType) & TypeFacts.EQUndefinedOrNull ?
28347
28347
getUnionType([getNonNullableType(leftType), rightType], UnionReduction.Subtype) :
28348
28348
leftType;
28349
28349
case SyntaxKind.EqualsToken:
0 commit comments