Skip to content

Commit 96f45ff

Browse files
committed
Simpler solution: getTypeFacts(neverType) should return TypeFacts.None
1 parent ade45ee commit 96f45ff

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/compiler/checker.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19390,6 +19390,9 @@ namespace ts {
1939019390
if (flags & TypeFlags.NonPrimitive) {
1939119391
return strictNullChecks ? TypeFacts.ObjectStrictFacts : TypeFacts.ObjectFacts;
1939219392
}
19393+
if (flags & TypeFlags.Never) {
19394+
return TypeFacts.None;
19395+
}
1939319396
if (flags & TypeFlags.Instantiable) {
1939419397
return getTypeFacts(getBaseConstraintOfType(type) || unknownType);
1939519398
}
@@ -19626,7 +19629,7 @@ namespace ts {
1962619629
const filtered = filter(types, f);
1962719630
return filtered === types ? type : getUnionTypeFromSortedList(filtered, (<UnionType>type).objectFlags);
1962819631
}
19629-
return f(type) ? type : neverType;
19632+
return type.flags & TypeFlags.Never || f(type) ? type : neverType;
1963019633
}
1963119634

1963219635
function countTypes(type: Type) {
@@ -28332,18 +28335,15 @@ namespace ts {
2833228335
case SyntaxKind.InKeyword:
2833328336
return checkInExpression(left, right, leftType, rightType);
2833428337
case SyntaxKind.AmpersandAmpersandToken:
28335-
return leftType === nonInferrableType || rightType === nonInferrableType ? nonInferrableType :
28336-
getTypeFacts(leftType) & TypeFacts.Truthy ?
28338+
return getTypeFacts(leftType) & TypeFacts.Truthy ?
2833728339
getUnionType([extractDefinitelyFalsyTypes(strictNullChecks ? leftType : getBaseTypeOfLiteralType(rightType)), rightType]) :
2833828340
leftType;
2833928341
case SyntaxKind.BarBarToken:
28340-
return leftType === nonInferrableType || rightType === nonInferrableType ? nonInferrableType :
28341-
getTypeFacts(leftType) & TypeFacts.Falsy && leftType !== nonInferrableType ?
28342+
return getTypeFacts(leftType) & TypeFacts.Falsy ?
2834228343
getUnionType([removeDefinitelyFalsyTypes(leftType), rightType], UnionReduction.Subtype) :
2834328344
leftType;
2834428345
case SyntaxKind.QuestionQuestionToken:
28345-
return leftType === nonInferrableType || rightType === nonInferrableType ? nonInferrableType :
28346-
getTypeFacts(leftType) & TypeFacts.EQUndefinedOrNull && leftType !== nonInferrableType ?
28346+
return getTypeFacts(leftType) & TypeFacts.EQUndefinedOrNull ?
2834728347
getUnionType([getNonNullableType(leftType), rightType], UnionReduction.Subtype) :
2834828348
leftType;
2834928349
case SyntaxKind.EqualsToken:

0 commit comments

Comments
 (0)