@@ -8907,7 +8907,9 @@ namespace ts {
8907
8907
if (target.flags & TypeFlags.StringOrNumberLiteral && target.flags & TypeFlags.FreshLiteral) {
8908
8908
target = (<LiteralType>target).regularType;
8909
8909
}
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)) {
8911
8913
return true;
8912
8914
}
8913
8915
if (source.flags & TypeFlags.Object && target.flags & TypeFlags.Object) {
@@ -9050,7 +9052,8 @@ namespace ts {
9050
9052
return isIdenticalTo(source, target);
9051
9053
}
9052
9054
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;
9054
9057
9055
9058
if (isObjectLiteralType(source) && source.flags & TypeFlags.FreshLiteral) {
9056
9059
if (hasExcessProperties(<FreshObjectLiteralType>source, target, reportErrors)) {
0 commit comments