check return type of this type predicates (#57341)

This commit is contained in:
Zzzen
2024-04-08 13:37:24 -07:00
committed by GitHub
parent 13e64740c9
commit f608fc0a10
9 changed files with 535 additions and 3 deletions
+2 -1
View File
@@ -736,6 +736,7 @@ import {
isThisInTypeQuery,
isThisProperty,
isThisTypeParameter,
isThisTypePredicate,
isTransientSymbol,
isTupleTypeNode,
isTypeAlias,
@@ -21217,7 +21218,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
if (sourceTypePredicate) {
result &= compareTypePredicateRelatedTo(sourceTypePredicate, targetTypePredicate, reportErrors, errorReporter, compareTypes);
}
else if (isIdentifierTypePredicate(targetTypePredicate)) {
else if (isIdentifierTypePredicate(targetTypePredicate) || isThisTypePredicate(targetTypePredicate)) {
if (reportErrors) {
errorReporter!(Diagnostics.Signature_0_must_be_a_type_predicate, signatureToString(source));
}
+2 -2
View File
@@ -591,7 +591,7 @@ export class LineNode implements LineCollection {
if (children.length) this.updateCounts();
}
isLeaf() {
isLeaf(): this is LineLeaf {
return false;
}
@@ -839,7 +839,7 @@ export class LineLeaf implements LineCollection {
constructor(public text: string) {
}
isLeaf() {
isLeaf(): this is LineLeaf {
return true;
}