Skip to content

Commit 7d5f5fd

Browse files
committed
Make comparable relationship bidirectional for primitive types
1 parent 9d56f7b commit 7d5f5fd

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/compiler/checker.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -8907,7 +8907,9 @@ namespace ts {
89078907
if (target.flags & TypeFlags.StringOrNumberLiteral && target.flags & TypeFlags.FreshLiteral) {
89088908
target = (<LiteralType>target).regularType;
89098909
}
8910-
if (source === target || relation !== identityRelation && isSimpleTypeRelatedTo(source, target, relation)) {
8910+
if (source === target ||
8911+
relation === comparableRelation && !(target.flags & TypeFlags.Never) && isSimpleTypeRelatedTo(target, source, relation) ||
8912+
relation !== identityRelation && isSimpleTypeRelatedTo(source, target, relation)) {
89118913
return true;
89128914
}
89138915
if (source.flags & TypeFlags.Object && target.flags & TypeFlags.Object) {
@@ -9050,7 +9052,8 @@ namespace ts {
90509052
return isIdenticalTo(source, target);
90519053
}
90529054

9053-
if (isSimpleTypeRelatedTo(source, target, relation, reportErrors ? reportError : undefined)) return Ternary.True;
9055+
if (relation === comparableRelation && !(target.flags & TypeFlags.Never) && isSimpleTypeRelatedTo(target, source, relation) ||
9056+
isSimpleTypeRelatedTo(source, target, relation, reportErrors ? reportError : undefined)) return Ternary.True;
90549057

90559058
if (isObjectLiteralType(source) && source.flags & TypeFlags.FreshLiteral) {
90569059
if (hasExcessProperties(<FreshObjectLiteralType>source, target, reportErrors)) {

0 commit comments

Comments
 (0)